namespace QtTapioca { class Avatar; class ContactBasePrivate; class Handle; class Q_DECL_EXPORT ContactBase: public ChannelTarget { Q_OBJECT Q_DECLARE_PRIVATE(ContactBase) Q_ENUMS(Presence) Q_ENUMS(Capability) public: enum Presence { Offline = 1, Available, Away, XA, Hidden, Busy }; enum Capability { None = 0x00, Text = 0x01, Audio = 0x02, Video = 0x03, All = 0xFF }; ~ContactBase(); void requestAvatar(); QString currentAvatarToken(); Presence presence() const; QString presenceMessage() const; QString alias() const; QList capabilities() const; bool operator==(const ContactBase &info) const; Q_SIGNALS: void avatarReceived(QtTapioca::ContactBase *contactBase, QtTapioca::Avatar *avatar); void avatarUpdated(QtTapioca::ContactBase *contactBase, const QString &newToken); void presenceUpdated(QtTapioca::ContactBase *contactBase, QtTapioca::ContactBase::Presence presence, const QString &presenceMessage); void aliasChanged(QtTapioca::ContactBase *contactBase, const QString &alias); void capabilitiesChanged(QtTapioca::ContactBase *contactBase, QtTapioca::ContactBase::Capability capabilities); namespace QtTapioca { class ContactPrivate; class Q_DECL_EXPORT Contact: public ContactBase { Q_OBJECT Q_DECLARE_PRIVATE(Contact) Q_ENUMS(SubscriptionStatus) Q_ENUMS(AuthorizationStatus) public: enum SubscriptionStatus { NotSubscribed = 0, RemotePending, Subscribed }; enum AuthorizationStatus { NonExistent = 0, LocalPending, Authorized }; ~Contact(); SubscriptionStatus subscriptionStatus() const; AuthorizationStatus authorizationStatus() const; void subscribe(bool value); void authorize(bool value); void hideFrom(bool value); bool hidingFrom() const; void block(bool value); bool isBlocked() const; Q_SIGNALS: void subscriptionStatusChanged(QtTapioca::Contact::SubscriptionStatus status); void authorizationStatusChanged(QtTapioca::Contact::AuthorizationStatus status); void hideFromStatusChanged(bool status); void blockStatusChanged(bool status);