Forwarding to the list -------- Original Message -------- Subject: Re: [Telepathy] tp-qt4 Requesting channels using ChannelDispatcher high-level API proposal Date: Mon, 08 Jun 2009 20:50:41 -0500 From: Matt Rogers <[email protected]> To: Andre Moreira Magalhaes <[email protected]> References: <[email protected]>
On Jun 8, 2009, at 3:40 PM, Andre Moreira Magalhaes wrote: > Hi, > > We now come to a point where we are going to start implementing > support for > requesting channels using ChannelDispatcher on tp-qt4, so here is a > proposal > API I would like to discuss with you before starting implementing > this. > > For those not familiar with ChannelDispatcher please refer to > http://telepathy.freedesktop.org/spec.html#org.freedesktop.Telepathy.ChannelDispatcher > > Aditional methods that will be added to Account: > > class Account : public ... > { > ... > > public: > ... > > // one to one chat > bool canEnsureTextChannel(); > ChannelRequestPtr ensureTextChat( > const QString &contactIdentifier, > QDateTime userActionTime = QDateTime::currentDateTime(), > const QString &preferredHandler = QString()); > ChannelRequestPtr ensureTextChat( > const ContactPtr &contact, > QDateTime userActionTime = QDateTime::currentDateTime(), > const QString &preferredHandler = QString()); > > // group chat > bool canEnsureGroupTextChat(); > ChannelRequestPtr ensureGroupTextChat( > const QStringList &contactsIdentifiers, > QDateTime userActionTime = QDateTime::currentDateTime(), > const QString &preferredHandler = QString()); > ChannelRequestPtr ensureGroupTextChat( > const QList<ContactPtr> &contacts, > QDateTime userActionTime = QDateTime::currentDateTime(), > const QString &preferredHandler = QString()); > > // room chat (irc, ...) > bool canEnsureRoomTextChat(); > ChannelRequest *ensureRoomTextChat( > const QString &roomName, > QDateTime userActionTime = QDateTime::currentDateTime(), > const QString &preferredHandler = QString()); > > // media call > bool canEnsureMediaCall(); > ChannelRequestPtr ensureMediaCall( > const QString &contactIdentifier, > QDateTime userActionTime = QDateTime::currentDateTime(), > const QString &preferredHandler = QString()); > ChannelRequestPtr ensureMediaCall( > const ContactPtr &contact, > QDateTime userActionTime = QDateTime::currentDateTime(), > const QString &preferredHandler = QString()); > > // file transfer > bool canCreateFileTransfer(); > ChannelRequestPtr createFileTransfer( > const QString &contactIdentifier, > QDateTime userActionTime = QDateTime::currentDateTime(), > const QString &preferredHandler = QString()); > ChannelRequestPtr createFileTransfer( > const ContactPtr &contact, > QDateTime userActionTime = QDateTime::currentDateTime(), > const QString &preferredHandler = QString()); > > // advanced > ChannelRequestPtr createChannel( > const QVariantMap &requestedProperties, > QDateTime userActionTime = QDateTime::currentDateTime(), > const QString &preferredHandler = QString()); > ChannelRequestPtr ensureChannel( > const QVariantMap &requestedProperties, > QDateTime userActionTime = QDateTime::currentDateTime(), > const QString &preferredHandler = QString()); > > ... > }; > > Now aditional contact methods, some would require ContactCapabilities > support. > > class Contact : public ... > { > public: > > ... > > // one to one chat > bool canEnsureTextChannel(); > ChannelRequestPtr ensureTextChat( > QDateTime userActionTime = QDateTime::currentDateTime(), > const QString &preferredHandler = QString()); > > // media call > bool canEnsureMediaCall(); > ChannelRequestPtr ensureMediaCall( > QDateTime userActionTime = QDateTime::currentDateTime(), > const QString &preferredHandler = QString()); > > // file transfer > bool canCreateFileTransfer(); > ChannelRequestPtr createFileTransfer( > QDateTime userActionTime = QDateTime::currentDateTime(), > const QString &preferredHandler = QString()); > > ... > }; > > * Note that Contact object would have to have access to the Contact > Account object, > which is not always possible (e.g: not using AccountManager), so the > Contact > methods would only work when an Account is being used. > * Should we support Tubes, FileTransfer here, as the support for > them is > not complete yet? > > Ideas, suggestions are welcome > BR > Andrunko > API looks fine to me. But I question putting the implementation of a draft specification (at least according to the page you linked) over adding more core telepathy functionality (like connection managers). Is there a reason why you're focusing on this over other things? -- Matt _______________________________________________ telepathy mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/telepathy
