Home · All Classes · All Namespaces · Modules · Functions · Files
contact-manager.h
00001 
00023 #ifndef _TelepathyQt_contact_manager_h_HEADER_GUARD_
00024 #define _TelepathyQt_contact_manager_h_HEADER_GUARD_
00025 
00026 #ifndef IN_TP_QT_HEADER
00027 #error IN_TP_QT_HEADER
00028 #endif
00029 
00030 #include <TelepathyQt/Channel>
00031 #include <TelepathyQt/Contact>
00032 #include <TelepathyQt/Feature>
00033 #include <TelepathyQt/Object>
00034 #include <TelepathyQt/ReferencedHandles>
00035 #include <TelepathyQt/Types>
00036 
00037 #include <QList>
00038 #include <QSet>
00039 #include <QString>
00040 #include <QStringList>
00041 #include <QVariantMap>
00042 
00043 namespace Tp
00044 {
00045 
00046 class Connection;
00047 class PendingContacts;
00048 class PendingOperation;
00049 
00050 class TP_QT_EXPORT ContactManager : public Object
00051 {
00052     Q_OBJECT
00053     Q_DISABLE_COPY(ContactManager)
00054 
00055 public:
00056     virtual ~ContactManager();
00057 
00058     ConnectionPtr connection() const;
00059 
00060     Features supportedFeatures() const;
00061 
00062     ContactListState state() const;
00063 
00064     Contacts allKnownContacts() const;
00065     QStringList allKnownGroups() const;
00066 
00067     PendingOperation *addGroup(const QString &group);
00068     PendingOperation *removeGroup(const QString &group);
00069 
00070     Contacts groupContacts(const QString &group) const;
00071     PendingOperation *addContactsToGroup(const QString &group,
00072             const QList<ContactPtr> &contacts);
00073     PendingOperation *removeContactsFromGroup(const QString &group,
00074             const QList<ContactPtr> &contacts);
00075 
00076     bool canRequestPresenceSubscription() const;
00077     bool subscriptionRequestHasMessage() const;
00078     PendingOperation *requestPresenceSubscription(
00079             const QList<ContactPtr> &contacts,
00080             const QString &message = QString());
00081     bool canRemovePresenceSubscription() const;
00082     bool subscriptionRemovalHasMessage() const;
00083     bool canRescindPresenceSubscriptionRequest() const;
00084     bool subscriptionRescindingHasMessage() const;
00085     PendingOperation *removePresenceSubscription(
00086             const QList<ContactPtr> &contacts,
00087             const QString &message = QString());
00088     bool canAuthorizePresencePublication() const;
00089     bool publicationAuthorizationHasMessage() const;
00090     PendingOperation *authorizePresencePublication(
00091             const QList<ContactPtr> &contacts,
00092             const QString &message = QString());
00093     bool publicationRejectionHasMessage() const;
00094     bool canRemovePresencePublication() const;
00095     bool publicationRemovalHasMessage() const;
00096     PendingOperation *removePresencePublication(
00097             const QList<ContactPtr> &contacts,
00098             const QString &message = QString());
00099     PendingOperation *removeContacts(
00100             const QList<ContactPtr> &contacts,
00101             const QString &message = QString());
00102 
00103     bool canBlockContacts() const;
00104     bool canReportAbuse() const;
00105     PendingOperation *blockContacts(const QList<ContactPtr> &contacts);
00106     PendingOperation *blockContactsAndReportAbuse(const QList<ContactPtr> &contacts);
00107     PendingOperation *unblockContacts(const QList<ContactPtr> &contacts);
00108 
00109     PendingContacts *contactsForHandles(const UIntList &handles,
00110             const Features &features = Features());
00111     PendingContacts *contactsForHandles(const ReferencedHandles &handles,
00112             const Features &features = Features());
00113     PendingContacts *contactsForHandles(const HandleIdentifierMap &handles,
00114             const Features &features = Features());
00115 
00116     PendingContacts *contactsForIdentifiers(const QStringList &identifiers,
00117             const Features &features = Features());
00118 
00119     PendingContacts *contactsForVCardAddresses(const QString &vcardField,
00120             const QStringList &vcardAddresses,
00121             const Features &features = Features());
00122     PendingContacts *contactsForUris(const QStringList &uris,
00123             const Features &features = Features());
00124 
00125     PendingContacts *upgradeContacts(const QList<ContactPtr> &contacts,
00126             const Features &features);
00127 
00128     void requestContactAvatars(const QList<ContactPtr> &contacts);
00129 
00130     PendingOperation *refreshContactInfo(const QList<ContactPtr> &contact);
00131 
00132 Q_SIGNALS:
00133     void stateChanged(Tp::ContactListState state);
00134 
00135     void presencePublicationRequested(const Tp::Contacts &contacts);
00136 
00137     void groupAdded(const QString &group);
00138     void groupRenamed(const QString &oldGroup, const QString &newGroup);
00139     void groupRemoved(const QString &group);
00140 
00141     void groupMembersChanged(const QString &group,
00142             const Tp::Contacts &groupMembersAdded,
00143             const Tp::Contacts &groupMembersRemoved,
00144             const Tp::Channel::GroupMemberChangeDetails &details);
00145 
00146     void allKnownContactsChanged(const Tp::Contacts &contactsAdded,
00147             const Tp::Contacts &contactsRemoved,
00148             const Tp::Channel::GroupMemberChangeDetails &details);
00149 
00150 private Q_SLOTS:
00151     TP_QT_NO_EXPORT void onAliasesChanged(const Tp::AliasPairList &);
00152     TP_QT_NO_EXPORT void doRequestAvatars();
00153     TP_QT_NO_EXPORT void onAvatarUpdated(uint, const QString &);
00154     TP_QT_NO_EXPORT void onAvatarRetrieved(uint, const QString &, const QByteArray &, const QString &);
00155     TP_QT_NO_EXPORT void onPresencesChanged(const Tp::SimpleContactPresences &);
00156     TP_QT_NO_EXPORT void onCapabilitiesChanged(const Tp::ContactCapabilitiesMap &);
00157     TP_QT_NO_EXPORT void onLocationUpdated(uint, const QVariantMap &);
00158     TP_QT_NO_EXPORT void onContactInfoChanged(uint, const Tp::ContactInfoFieldList &);
00159     TP_QT_NO_EXPORT void onClientTypesUpdated(uint, const QStringList &);
00160     TP_QT_NO_EXPORT void doRefreshInfo();
00161 
00162 private:
00163     class PendingRefreshContactInfo;
00164     class Roster;
00165     friend class Channel;
00166     friend class Connection;
00167     friend class PendingContacts;
00168     friend class PendingRefreshContactInfo;
00169     friend class Roster;
00170 
00171     TP_QT_NO_EXPORT ContactManager(Connection *parent);
00172 
00173     TP_QT_NO_EXPORT ContactPtr lookupContactByHandle(uint handle);
00174 
00175     TP_QT_NO_EXPORT ContactPtr ensureContact(const ReferencedHandles &handle,
00176             const Features &features,
00177             const QVariantMap &attributes);
00178     TP_QT_NO_EXPORT ContactPtr ensureContact(uint bareHandle,
00179             const QString &id, const Features &features);
00180 
00181     TP_QT_NO_EXPORT static QString featureToInterface(const Feature &feature);
00182     TP_QT_NO_EXPORT void ensureTracking(const Feature &feature);
00183 
00184     TP_QT_NO_EXPORT PendingOperation *introspectRoster();
00185     TP_QT_NO_EXPORT PendingOperation *introspectRosterGroups();
00186     TP_QT_NO_EXPORT void resetRoster();
00187 
00188     TP_QT_NO_EXPORT PendingOperation *refreshContactInfo(Contact *contact);
00189 
00190     struct Private;
00191     friend struct Private;
00192     Private *mPriv;
00193 };
00194 
00195 } // Tp
00196 
00197 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt 0.9.3