/** * 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