Home · All Classes · All Namespaces · Modules · Functions · Files
base-connection.h
00001 
00023 #ifndef _TelepathyQt_base_connection_h_HEADER_GUARD_
00024 #define _TelepathyQt_base_connection_h_HEADER_GUARD_
00025 
00026 #ifndef IN_TP_QT_HEADER
00027 #error IN_TP_QT_HEADER
00028 #endif
00029 
00030 #include <TelepathyQt/AvatarSpec>
00031 #include <TelepathyQt/DBusService>
00032 #include <TelepathyQt/Global>
00033 #include <TelepathyQt/Types>
00034 #include <TelepathyQt/Callbacks>
00035 #include <TelepathyQt/Constants>
00036 
00037 #include <QDBusConnection>
00038 
00039 class QString;
00040 
00041 namespace Tp
00042 {
00043 
00044 class TP_QT_EXPORT BaseConnection : public DBusService
00045 {
00046     Q_OBJECT
00047     Q_DISABLE_COPY(BaseConnection)
00048 
00049 public:
00050     static BaseConnectionPtr create(const QString &cmName, const QString &protocolName,
00051                                     const QVariantMap &parameters,
00052                                     const QDBusConnection &dbusConnection = QDBusConnection::sessionBus())
00053     {
00054         return BaseConnectionPtr(new BaseConnection(
00055                                      dbusConnection, cmName, protocolName, parameters));
00056     }
00057     template<typename BaseConnectionSubclass>
00058     static SharedPtr<BaseConnectionSubclass> create(const QString &cmName,
00059             const QString &protocolName, const QVariantMap &parameters,
00060             const QDBusConnection &dbusConnection = QDBusConnection::sessionBus())
00061     {
00062         return SharedPtr<BaseConnectionSubclass>(new BaseConnectionSubclass(
00063                     dbusConnection, cmName, protocolName, parameters));
00064     }
00065 
00066     virtual ~BaseConnection();
00067 
00068     QString cmName() const;
00069     QString protocolName() const;
00070     QVariantMap parameters() const;
00071     QVariantMap immutableProperties() const;
00072 
00073     uint selfHandle() const;
00074     void setSelfHandle(uint selfHandle);
00075 
00076     QString selfID() const;
00077     void setSelfID(const QString &selfID);
00078 
00079     void setSelfContact(uint selfHandle, const QString &selfID);
00080 
00081     uint status() const;
00082     void setStatus(uint newStatus, uint reason);
00083 
00084     typedef Callback2<BaseChannelPtr, const QVariantMap &, DBusError*> CreateChannelCallback;
00085     void setCreateChannelCallback(const CreateChannelCallback &cb);
00086     BaseChannelPtr createChannel(const QVariantMap &request, bool suppressHandler, DBusError *error);
00087 
00088     typedef Callback1<void, DBusError*> ConnectCallback;
00089     void setConnectCallback(const ConnectCallback &cb);
00090 
00091     typedef Callback3<QStringList, uint, const Tp::UIntList &, DBusError*> InspectHandlesCallback;
00092     void setInspectHandlesCallback(const InspectHandlesCallback &cb);
00093     QStringList inspectHandles(uint handleType, const Tp::UIntList &handles, DBusError *error);
00094 
00095     typedef Callback3<Tp::UIntList, uint, const QStringList &, DBusError*> RequestHandlesCallback;
00096     void setRequestHandlesCallback(const RequestHandlesCallback &cb);
00097     Tp::UIntList requestHandles(uint handleType, const QStringList &identifiers, DBusError *error);
00098 
00099     Tp::ChannelInfoList channelsInfo();
00100     Tp::ChannelDetailsList channelsDetails();
00101 
00102     BaseChannelPtr ensureChannel(const QVariantMap &request, bool &yours, bool suppressHandler, DBusError *error);
00103 
00104     void addChannel(BaseChannelPtr channel, bool suppressHandler = false);
00105 
00106     QList<AbstractConnectionInterfacePtr> interfaces() const;
00107     AbstractConnectionInterfacePtr interface(const QString  &interfaceName) const;
00108     bool plugInterface(const AbstractConnectionInterfacePtr &interface);
00109     bool registerObject(DBusError *error = NULL);
00110 
00111     virtual QString uniqueName() const;
00112 
00113 Q_SIGNALS:
00114     void disconnected();
00115 
00116 private Q_SLOTS:
00117     TP_QT_NO_EXPORT void removeChannel();
00118 
00119 protected:
00120     BaseConnection(const QDBusConnection &dbusConnection,
00121                    const QString &cmName, const QString &protocolName,
00122                    const QVariantMap &parameters);
00123 
00124     virtual bool registerObject(const QString &busName, const QString &objectPath,
00125                                 DBusError *error);
00126 
00127     virtual bool matchChannel(const Tp::BaseChannelPtr &channel, const QVariantMap &request, Tp::DBusError *error);
00128 
00129 private:
00130     class Adaptee;
00131     friend class Adaptee;
00132     struct Private;
00133     friend struct Private;
00134     Private *mPriv;
00135 };
00136 
00137 class TP_QT_EXPORT AbstractConnectionInterface : public AbstractDBusServiceInterface
00138 {
00139     Q_OBJECT
00140     Q_DISABLE_COPY(AbstractConnectionInterface)
00141 
00142 public:
00143     AbstractConnectionInterface(const QString &interfaceName);
00144     virtual ~AbstractConnectionInterface();
00145 
00146 private:
00147     friend class BaseConnection;
00148 
00149     struct Private;
00150     friend struct Private;
00151     Private *mPriv;
00152 };
00153 
00154 class TP_QT_EXPORT BaseConnectionRequestsInterface : public AbstractConnectionInterface
00155 {
00156     Q_OBJECT
00157     Q_DISABLE_COPY(BaseConnectionRequestsInterface)
00158 
00159 public:
00160     static BaseConnectionRequestsInterfacePtr create(BaseConnection* connection) {
00161         return BaseConnectionRequestsInterfacePtr(new BaseConnectionRequestsInterface(connection));
00162     }
00163     template<typename BaseConnectionRequestsInterfaceSubclass>
00164     static SharedPtr<BaseConnectionRequestsInterfaceSubclass> create(BaseConnection* connection) {
00165         return SharedPtr<BaseConnectionRequestsInterfaceSubclass>(
00166                    new BaseConnectionRequestsInterfaceSubclass(connection));
00167     }
00168 
00169     virtual ~BaseConnectionRequestsInterface();
00170 
00171     QVariantMap immutableProperties() const;
00172 
00173     Tp::RequestableChannelClassList requestableChannelClasses;
00174     void ensureChannel(const QVariantMap &request, bool &yours,
00175                        QDBusObjectPath &channel, QVariantMap &details, DBusError* error);
00176     void createChannel(const QVariantMap &request, QDBusObjectPath &channel,
00177                        QVariantMap &details, DBusError* error);
00178 
00179 public Q_SLOTS:
00180     void newChannels(const Tp::ChannelDetailsList &channels);
00181     void channelClosed(const QDBusObjectPath &removed);
00182 
00183 protected:
00184     BaseConnectionRequestsInterface(BaseConnection* connection);
00185 
00186 private:
00187     void createAdaptor();
00188 
00189     class Adaptee;
00190     friend class Adaptee;
00191     struct Private;
00192     friend struct Private;
00193     Private *mPriv;
00194 };
00195 
00196 
00197 class TP_QT_EXPORT BaseConnectionContactsInterface : public AbstractConnectionInterface
00198 {
00199     Q_OBJECT
00200     Q_DISABLE_COPY(BaseConnectionContactsInterface)
00201 
00202 
00203 public:
00204     static BaseConnectionContactsInterfacePtr create() {
00205         return BaseConnectionContactsInterfacePtr(new BaseConnectionContactsInterface());
00206     }
00207     template<typename BaseConnectionContactsInterfaceSubclass>
00208     static SharedPtr<BaseConnectionContactsInterfaceSubclass> create() {
00209         return SharedPtr<BaseConnectionContactsInterfaceSubclass>(
00210                    new BaseConnectionContactsInterfaceSubclass());
00211     }
00212 
00213     virtual ~BaseConnectionContactsInterface();
00214 
00215     QVariantMap immutableProperties() const;
00216 
00217     typedef Callback3<ContactAttributesMap, const Tp::UIntList&, const QStringList&, DBusError*> GetContactAttributesCallback;
00218     void setGetContactAttributesCallback(const GetContactAttributesCallback &cb);
00219     ContactAttributesMap getContactAttributes(const Tp::UIntList &handles,
00220             const QStringList &interfaces,
00221             DBusError *error);
00222     void setContactAttributeInterfaces(const QStringList &contactAttributeInterfaces);
00223 protected:
00224     BaseConnectionContactsInterface();
00225 
00226 private:
00227     void createAdaptor();
00228 
00229     class Adaptee;
00230     friend class Adaptee;
00231     struct Private;
00232     friend struct Private;
00233     Private *mPriv;
00234 };
00235 
00236 class TP_QT_EXPORT BaseConnectionSimplePresenceInterface : public AbstractConnectionInterface
00237 {
00238     Q_OBJECT
00239     Q_DISABLE_COPY(BaseConnectionSimplePresenceInterface)
00240 
00241 public:
00242     static BaseConnectionSimplePresenceInterfacePtr create()
00243     {
00244         return BaseConnectionSimplePresenceInterfacePtr(new BaseConnectionSimplePresenceInterface());
00245     }
00246     template<typename BaseConnectionSimplePresenceInterfaceSubclass>
00247     static SharedPtr<BaseConnectionSimplePresenceInterfaceSubclass> create()
00248     {
00249         return SharedPtr<BaseConnectionSimplePresenceInterfaceSubclass>(
00250                 new BaseConnectionSimplePresenceInterfaceSubclass());
00251     }
00252 
00253     virtual ~BaseConnectionSimplePresenceInterface();
00254 
00255     QVariantMap immutableProperties() const;
00256 
00257     Tp::SimpleStatusSpecMap statuses() const;
00258     void setStatuses(const Tp::SimpleStatusSpecMap &statuses);
00259 
00260     uint maximumStatusMessageLength() const;
00261     void setMaximumStatusMessageLength(uint maximumStatusMessageLength);
00262 
00263     typedef Callback3<uint, const QString &, const QString &, DBusError*> SetPresenceCallback;
00264     void setSetPresenceCallback(const SetPresenceCallback &cb);
00265 
00266     void setPresences(const Tp::SimpleContactPresences &presences);
00267 
00268     Tp::SimpleContactPresences getPresences(const Tp::UIntList &contacts);
00269 
00270 protected:
00271     BaseConnectionSimplePresenceInterface();
00272 
00273 private:
00274     void createAdaptor();
00275 
00276     class Adaptee;
00277     friend class Adaptee;
00278     struct Private;
00279     friend struct Private;
00280     Private *mPriv;
00281 };
00282 
00283 class TP_QT_EXPORT BaseConnectionContactListInterface : public AbstractConnectionInterface
00284 {
00285     Q_OBJECT
00286     Q_DISABLE_COPY(BaseConnectionContactListInterface)
00287 
00288 public:
00289     static BaseConnectionContactListInterfacePtr create()
00290     {
00291         return BaseConnectionContactListInterfacePtr(new BaseConnectionContactListInterface());
00292     }
00293     template<typename BaseConnectionContactListInterfaceSubclass>
00294     static SharedPtr<BaseConnectionContactListInterfaceSubclass> create()
00295     {
00296         return SharedPtr<BaseConnectionContactListInterfaceSubclass>(
00297                 new BaseConnectionContactListInterfaceSubclass());
00298     }
00299 
00300     virtual ~BaseConnectionContactListInterface();
00301 
00302     QVariantMap immutableProperties() const;
00303 
00304     uint contactListState() const;
00305     void setContactListState(uint contactListState);
00306 
00307     bool contactListPersists() const;
00308     void setContactListPersists(bool contactListPersists);
00309 
00310     bool canChangeContactList() const;
00311     void setCanChangeContactList(bool canChangeContactList);
00312 
00313     bool requestUsesMessage() const;
00314     void setRequestUsesMessage(bool requestUsesMessage);
00315 
00316     bool downloadAtConnection() const;
00317     void setDownloadAtConnection(bool downloadAtConnection);
00318 
00319     typedef Callback3<Tp::ContactAttributesMap, const QStringList &, bool, DBusError*> GetContactListAttributesCallback;
00320     void setGetContactListAttributesCallback(const GetContactListAttributesCallback &cb);
00321     Tp::ContactAttributesMap getContactListAttributes(const QStringList &interfaces, bool hold, DBusError *error);
00322 
00323     typedef Callback3<void, const Tp::UIntList &, const QString &, DBusError*> RequestSubscriptionCallback;
00324     void setRequestSubscriptionCallback(const RequestSubscriptionCallback &cb);
00325     void requestSubscription(const Tp::UIntList &contacts, const QString &message, DBusError *error);
00326 
00327     typedef Callback2<void, const Tp::UIntList &, DBusError*> AuthorizePublicationCallback;
00328     void setAuthorizePublicationCallback(const AuthorizePublicationCallback &cb);
00329     void authorizePublication(const Tp::UIntList &contacts, DBusError *error);
00330 
00331     typedef Callback2<void, const Tp::UIntList &, DBusError*> RemoveContactsCallback;
00332     void setRemoveContactsCallback(const RemoveContactsCallback &cb);
00333     void removeContacts(const Tp::UIntList &contacts, DBusError *error);
00334 
00335     typedef Callback2<void, const Tp::UIntList &, DBusError*> UnsubscribeCallback;
00336     void setUnsubscribeCallback(const UnsubscribeCallback &cb);
00337     void unsubscribe(const Tp::UIntList &contacts, DBusError *error);
00338 
00339     typedef Callback2<void, const Tp::UIntList &, DBusError*> UnpublishCallback;
00340     void setUnpublishCallback(const UnpublishCallback &cb);
00341     void unpublish(const Tp::UIntList &contacts, DBusError *error);
00342 
00343     typedef Callback1<void, DBusError*> DownloadCallback;
00344     void setDownloadCallback(const DownloadCallback &cb);
00345     void download(DBusError *error);
00346 
00347     void contactsChangedWithID(const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals);
00348 
00349 protected:
00350     BaseConnectionContactListInterface();
00351 
00352 private:
00353     void createAdaptor();
00354 
00355     class Adaptee;
00356     friend class Adaptee;
00357     struct Private;
00358     friend struct Private;
00359     Private *mPriv;
00360 };
00361 
00362 class TP_QT_EXPORT BaseConnectionContactInfoInterface : public AbstractConnectionInterface
00363 {
00364     Q_OBJECT
00365     Q_DISABLE_COPY(BaseConnectionContactInfoInterface)
00366 
00367 public:
00368     static BaseConnectionContactInfoInterfacePtr create()
00369     {
00370         return BaseConnectionContactInfoInterfacePtr(new BaseConnectionContactInfoInterface());
00371     }
00372     template<typename BaseConnectionContactInfoInterfaceSubclass>
00373     static SharedPtr<BaseConnectionContactInfoInterfaceSubclass> create()
00374     {
00375         return SharedPtr<BaseConnectionContactInfoInterfaceSubclass>(
00376                 new BaseConnectionContactInfoInterfaceSubclass());
00377     }
00378 
00379     virtual ~BaseConnectionContactInfoInterface();
00380 
00381     QVariantMap immutableProperties() const;
00382 
00383     Tp::ContactInfoFlags contactInfoFlags() const;
00384     void setContactInfoFlags(const Tp::ContactInfoFlags &contactInfoFlags);
00385 
00386     Tp::FieldSpecs supportedFields() const;
00387     void setSupportedFields(const Tp::FieldSpecs &supportedFields);
00388 
00389     typedef Callback2<Tp::ContactInfoMap, const Tp::UIntList &, DBusError*> GetContactInfoCallback;
00390     void setGetContactInfoCallback(const GetContactInfoCallback &cb);
00391     Tp::ContactInfoMap getContactInfo(const Tp::UIntList &contacts, DBusError *error);
00392 
00393     typedef Callback2<void, const Tp::UIntList &, DBusError*> RefreshContactInfoCallback;
00394     void setRefreshContactInfoCallback(const RefreshContactInfoCallback &cb);
00395     void refreshContactInfo(const Tp::UIntList &contacts, DBusError *error);
00396 
00397     typedef Callback2<Tp::ContactInfoFieldList, uint, DBusError*> RequestContactInfoCallback;
00398     void setRequestContactInfoCallback(const RequestContactInfoCallback &cb);
00399     Tp::ContactInfoFieldList requestContactInfo(uint contact, DBusError *error);
00400 
00401     typedef Callback2<void, const Tp::ContactInfoFieldList &, DBusError*> SetContactInfoCallback;
00402     void setSetContactInfoCallback(const SetContactInfoCallback &cb);
00403     void setContactInfo(const Tp::ContactInfoFieldList &contactInfo, DBusError *error);
00404 
00405     void contactInfoChanged(uint contact, const Tp::ContactInfoFieldList &contactInfo);
00406 
00407 protected:
00408     BaseConnectionContactInfoInterface();
00409 
00410 private:
00411     void createAdaptor();
00412 
00413     class Adaptee;
00414     friend class Adaptee;
00415     struct Private;
00416     friend struct Private;
00417     Private *mPriv;
00418 };
00419 
00420 class TP_QT_EXPORT BaseConnectionAddressingInterface : public AbstractConnectionInterface
00421 {
00422     Q_OBJECT
00423     Q_DISABLE_COPY(BaseConnectionAddressingInterface)
00424 
00425 public:
00426     static BaseConnectionAddressingInterfacePtr create() {
00427         return BaseConnectionAddressingInterfacePtr(new BaseConnectionAddressingInterface());
00428     }
00429     template<typename BaseConnectionAddressingInterfaceSubclass>
00430     static SharedPtr<BaseConnectionAddressingInterfaceSubclass> create() {
00431         return SharedPtr<BaseConnectionAddressingInterfaceSubclass>(
00432                    new BaseConnectionAddressingInterfaceSubclass());
00433     }
00434 
00435     virtual ~BaseConnectionAddressingInterface();
00436 
00437     QVariantMap immutableProperties() const;
00438 
00439 
00440 
00441     typedef Callback6 < void, const QString&, const QStringList&, const QStringList&,
00442             Tp::AddressingNormalizationMap&, Tp::ContactAttributesMap&, DBusError* > GetContactsByVCardFieldCallback;
00443     void setGetContactsByVCardFieldCallback(const GetContactsByVCardFieldCallback &cb);
00444 
00445     typedef Callback5 < void, const QStringList&, const QStringList&,
00446             Tp::AddressingNormalizationMap&, Tp::ContactAttributesMap&, DBusError* > GetContactsByURICallback;
00447     void setGetContactsByURICallback(const GetContactsByURICallback &cb);
00448 
00449 protected:
00450     BaseConnectionAddressingInterface();
00451 
00452 private:
00453     void createAdaptor();
00454 
00455     class Adaptee;
00456     friend class Adaptee;
00457     struct Private;
00458     friend struct Private;
00459     Private *mPriv;
00460 };
00461 
00462 class TP_QT_EXPORT BaseConnectionAliasingInterface : public AbstractConnectionInterface
00463 {
00464     Q_OBJECT
00465     Q_DISABLE_COPY(BaseConnectionAliasingInterface)
00466 
00467 public:
00468     static BaseConnectionAliasingInterfacePtr create()
00469     {
00470         return BaseConnectionAliasingInterfacePtr(new BaseConnectionAliasingInterface());
00471     }
00472     template<typename BaseConnectionAliasingInterfaceSubclass>
00473     static SharedPtr<BaseConnectionAliasingInterfaceSubclass> create()
00474     {
00475         return SharedPtr<BaseConnectionAliasingInterfaceSubclass>(
00476                 new BaseConnectionAliasingInterfaceSubclass());
00477     }
00478 
00479     virtual ~BaseConnectionAliasingInterface();
00480 
00481     QVariantMap immutableProperties() const;
00482 
00483     typedef Callback1<Tp::ConnectionAliasFlags, DBusError*> GetAliasFlagsCallback;
00484     void setGetAliasFlagsCallback(const GetAliasFlagsCallback &cb);
00485     Tp::ConnectionAliasFlags getAliasFlags(DBusError *error);
00486 
00487     typedef Callback2<QStringList, const Tp::UIntList &, DBusError*> RequestAliasesCallback;
00488     void setRequestAliasesCallback(const RequestAliasesCallback &cb);
00489     QStringList requestAliases(const Tp::UIntList &contacts, DBusError *error);
00490 
00491     typedef Callback2<Tp::AliasMap, const Tp::UIntList &, DBusError*> GetAliasesCallback;
00492     void setGetAliasesCallback(const GetAliasesCallback &cb);
00493     Tp::AliasMap getAliases(const Tp::UIntList &contacts, DBusError *error);
00494 
00495     typedef Callback2<void, const Tp::AliasMap &, DBusError*> SetAliasesCallback;
00496     void setSetAliasesCallback(const SetAliasesCallback &cb);
00497     void setAliases(const Tp::AliasMap &aliases, DBusError *error);
00498 
00499     void aliasesChanged(const Tp::AliasPairList &aliases);
00500 
00501 protected:
00502     BaseConnectionAliasingInterface();
00503 
00504 private:
00505     void createAdaptor();
00506 
00507     class Adaptee;
00508     friend class Adaptee;
00509     struct Private;
00510     friend struct Private;
00511     Private *mPriv;
00512 };
00513 
00514 class TP_QT_EXPORT BaseConnectionAvatarsInterface : public AbstractConnectionInterface
00515 {
00516     Q_OBJECT
00517     Q_DISABLE_COPY(BaseConnectionAvatarsInterface)
00518 
00519 public:
00520     static BaseConnectionAvatarsInterfacePtr create()
00521     {
00522         return BaseConnectionAvatarsInterfacePtr(new BaseConnectionAvatarsInterface());
00523     }
00524     template<typename BaseConnectionAvatarsInterfaceSubclass>
00525     static SharedPtr<BaseConnectionAvatarsInterfaceSubclass> create()
00526     {
00527         return SharedPtr<BaseConnectionAvatarsInterfaceSubclass>(
00528                 new BaseConnectionAvatarsInterfaceSubclass());
00529     }
00530 
00531     virtual ~BaseConnectionAvatarsInterface();
00532 
00533     QVariantMap immutableProperties() const;
00534 
00535     AvatarSpec avatarDetails() const;
00536     void setAvatarDetails(const AvatarSpec &spec);
00537 
00538     typedef Callback2<Tp::AvatarTokenMap, const Tp::UIntList &, DBusError*> GetKnownAvatarTokensCallback;
00539     void setGetKnownAvatarTokensCallback(const GetKnownAvatarTokensCallback &cb);
00540     Tp::AvatarTokenMap getKnownAvatarTokens(const Tp::UIntList &contacts, DBusError *error);
00541 
00542     typedef Callback2<void, const Tp::UIntList &, DBusError*> RequestAvatarsCallback;
00543     void setRequestAvatarsCallback(const RequestAvatarsCallback &cb);
00544     void requestAvatars(const Tp::UIntList &contacts, DBusError *error);
00545 
00546     typedef Callback3<QString, const QByteArray &, const QString &, DBusError*> SetAvatarCallback;
00547     void setSetAvatarCallback(const SetAvatarCallback &cb);
00548     QString setAvatar(const QByteArray &avatar, const QString &mimeType, DBusError *error);
00549 
00550     typedef Callback1<void, DBusError*> ClearAvatarCallback;
00551     void setClearAvatarCallback(const ClearAvatarCallback &cb);
00552     void clearAvatar(DBusError *error);
00553 
00554     void avatarUpdated(uint contact, const QString &newAvatarToken);
00555     void avatarRetrieved(uint contact, const QString &token, const QByteArray &avatar, const QString &type);
00556 
00557 protected:
00558     BaseConnectionAvatarsInterface();
00559 
00560 private:
00561     void createAdaptor();
00562 
00563     class Adaptee;
00564     friend class Adaptee;
00565     struct Private;
00566     friend struct Private;
00567     Private *mPriv;
00568 };
00569 
00570 }
00571 
00572 #endif


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