/**
* 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 getExistingChannel(const QVariantMap &request, DBusError *error);
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();
protected:
virtual void setBaseConnection(BaseConnection *connection);
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;
QStringList contactAttributeInterfaces() const;
void setContactAttributeInterfaces(const QStringList &contactAttributeInterfaces);
typedef Callback3 GetContactAttributesCallback;
void setGetContactAttributesCallback(const GetContactAttributesCallback &cb);
Tp::ContactAttributesMap getContactAttributes(const Tp::UIntList &handles, const QStringList &interfaces, DBusError *error);
void getContactByID(const QString &identifier, const QStringList &interfaces, uint &handle, QVariantMap &attributes, DBusError *error);
protected:
BaseConnectionContactsInterface();
void setBaseConnection(BaseConnection *connection);
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();
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();
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 BaseConnectionContactGroupsInterface : public AbstractConnectionInterface
{
Q_OBJECT
Q_DISABLE_COPY(BaseConnectionContactGroupsInterface)
public:
static BaseConnectionContactGroupsInterfacePtr create()
{
return BaseConnectionContactGroupsInterfacePtr(new BaseConnectionContactGroupsInterface());
}
template
static SharedPtr create()
{
return SharedPtr(
new BaseConnectionContactGroupsInterfaceSubclass());
}
virtual ~BaseConnectionContactGroupsInterface();
bool disjointGroups() const;
void setDisjointGroups(bool disjointGroups);
Tp::ContactMetadataStorageType groupStorage() const;
void setGroupStorage(Tp::ContactMetadataStorageType groupStorage);
QStringList groups() const;
void setGroups(const QStringList &groups);
typedef Callback3 SetContactGroupsCallback;
void setSetContactGroupsCallback(const SetContactGroupsCallback &cb);
void setContactGroups(uint contact, const QStringList &groups, DBusError *error);
typedef Callback3 SetGroupMembersCallback;
void setSetGroupMembersCallback(const SetGroupMembersCallback &cb);
void setGroupMembers(const QString &group, const Tp::UIntList &members, DBusError *error);
typedef Callback3 AddToGroupCallback;
void setAddToGroupCallback(const AddToGroupCallback &cb);
void addToGroup(const QString &group, const Tp::UIntList &members, DBusError *error);
typedef Callback3 RemoveFromGroupCallback;
void setRemoveFromGroupCallback(const RemoveFromGroupCallback &cb);
void removeFromGroup(const QString &group, const Tp::UIntList &members, DBusError *error);
typedef Callback2 RemoveGroupCallback;
void setRemoveGroupCallback(const RemoveGroupCallback &cb);
void removeGroup(const QString &group, DBusError *error);
typedef Callback3 RenameGroupCallback;
void setRenameGroupCallback(const RenameGroupCallback &cb);
void renameGroup(const QString &oldName, const QString &newName, DBusError *error);
void groupsCreated(const QStringList &names);
void groupRenamed(const QString &oldName, const QString &newName);
void groupsRemoved(const QStringList &names);
void groupsChanged(const Tp::UIntList &contact, const QStringList &added, const QStringList &removed);
protected:
BaseConnectionContactGroupsInterface();
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();
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();
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();
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();
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;
};
class TP_QT_EXPORT BaseConnectionClientTypesInterface : public AbstractConnectionInterface
{
Q_OBJECT
Q_DISABLE_COPY(BaseConnectionClientTypesInterface)
public:
static BaseConnectionClientTypesInterfacePtr create()
{
return BaseConnectionClientTypesInterfacePtr(new BaseConnectionClientTypesInterface());
}
template
static SharedPtr create()
{
return SharedPtr(
new BaseConnectionClientTypesInterfaceSubclass());
}
virtual ~BaseConnectionClientTypesInterface();
typedef Callback2 GetClientTypesCallback;
void setGetClientTypesCallback(const GetClientTypesCallback &cb);
Tp::ContactClientTypes getClientTypes(const Tp::UIntList &contacts, DBusError *error);
typedef Callback2 RequestClientTypesCallback;
void setRequestClientTypesCallback(const RequestClientTypesCallback &cb);
QStringList requestClientTypes(uint contact, DBusError *error);
void clientTypesUpdated(uint contact, const QStringList &clientTypes);
protected:
BaseConnectionClientTypesInterface();
private:
void createAdaptor();
class Adaptee;
friend class Adaptee;
struct Private;
friend struct Private;
Private *mPriv;
};
class TP_QT_EXPORT BaseConnectionContactCapabilitiesInterface : public AbstractConnectionInterface
{
Q_OBJECT
Q_DISABLE_COPY(BaseConnectionContactCapabilitiesInterface)
public:
static BaseConnectionContactCapabilitiesInterfacePtr create()
{
return BaseConnectionContactCapabilitiesInterfacePtr(new BaseConnectionContactCapabilitiesInterface());
}
template
static SharedPtr create()
{
return SharedPtr(
new BaseConnectionContactCapabilitiesInterfaceSubclass());
}
virtual ~BaseConnectionContactCapabilitiesInterface();
typedef Callback2 UpdateCapabilitiesCallback;
void setUpdateCapabilitiesCallback(const UpdateCapabilitiesCallback &cb);
void updateCapabilities(const Tp::HandlerCapabilitiesList &handlerCapabilities, DBusError *error);
typedef Callback2 GetContactCapabilitiesCallback;
void setGetContactCapabilitiesCallback(const GetContactCapabilitiesCallback &cb);
Tp::ContactCapabilitiesMap getContactCapabilities(const Tp::UIntList &handles, DBusError *error);
void contactCapabilitiesChanged(const Tp::ContactCapabilitiesMap &caps);
protected:
BaseConnectionContactCapabilitiesInterface();
private:
void createAdaptor();
class Adaptee;
friend class Adaptee;
struct Private;
friend struct Private;
Private *mPriv;
};
}
#endif