KDEConnectTelepathyProtocol::KDEConnectTelepathyProtocol(const QDBusConnection &dbusConnection, const QString &name) : BaseProtocol(dbusConnection, name) { setParameters(Tp::ProtocolParameterList() << Tp::ProtocolParameter(QLatin1String("device_id"), QLatin1String("s"), Tp::ConnMgrParamFlagRequired) << Tp::ProtocolParameter(QLatin1String("self_name"), QLatin1String("s"), 0)); setRequestableChannelClasses(Tp::RequestableChannelClassSpecList() << Tp::RequestableChannelClassSpec::textChat()); // callbacks setCreateConnectionCallback(memFun(this, &KDEConnectTelepathyProtocol::createConnection)); setIdentifyAccountCallback(memFun(this, &KDEConnectTelepathyProtocol::identifyAccount)); setNormalizeContactCallback(memFun(this, &KDEConnectTelepathyProtocol::normalizeContact)); addrIface = Tp::BaseProtocolAddressingInterface::create(); addrIface->setAddressableVCardFields(QStringList() << QLatin1String("tel")); addrIface->setAddressableUriSchemes(QStringList() << QLatin1String("tel") << QLatin1String("sms")); addrIface->setNormalizeVCardAddressCallback(memFun(this, &KDEConnectTelepathyProtocol::normalizeVCardAddress)); addrIface->setNormalizeContactUriCallback(memFun(this, &KDEConnectTelepathyProtocol::normalizeContactUri)); plugInterface(Tp::AbstractProtocolInterfacePtr::dynamicCast(addrIface)); presenceIface = Tp::BaseProtocolPresenceInterface::create(); presenceIface->setStatuses(ConnectConnection::getSimpleStatusSpecMap()); plugInterface(Tp::AbstractProtocolInterfacePtr::dynamicCast(presenceIface)); auto bus = QDBusConnection::sessionBus(); bus.registerObject("/kdeconnect", this, QDBusConnection::ExportAllSignals | QDBusConnection::ExportAllSlots); Tp::DBusError err; }
KDEConnectTelepathyProtocol::KDEConnectTelepathyProtocol(const QDBusConnection &dbusConnection, const QString &name) : BaseProtocol(dbusConnection, name) { // setParameters(Tp::ProtocolParameterList() // << Tp::ProtocolParameter(QLatin1String("device_id"), QLatin1String("s"), Tp::ConnMgrParamFlagRequired) // << Tp::ProtocolParameter(QLatin1String("self_name"), QLatin1String("s"), 0)); setRequestableChannelClasses(Tp::RequestableChannelClassSpecList() << Tp::RequestableChannelClassSpec::textChat()); // callbacks setCreateConnectionCallback(memFun(this, &KDEConnectTelepathyProtocol::createConnection)); setIdentifyAccountCallback(memFun(this, &KDEConnectTelepathyProtocol::identifyAccount)); setNormalizeContactCallback(memFun(this, &KDEConnectTelepathyProtocol::normalizeContact)); addrIface = Tp::BaseProtocolAddressingInterface::create(); addrIface->setAddressableVCardFields(QStringList() << QLatin1String("x-example-vcard-field")); addrIface->setAddressableUriSchemes(QStringList() << QLatin1String("example-uri-scheme")); addrIface->setNormalizeVCardAddressCallback(memFun(this, &KDEConnectTelepathyProtocol::normalizeVCardAddress)); addrIface->setNormalizeContactUriCallback(memFun(this, &KDEConnectTelepathyProtocol::normalizeContactUri)); plugInterface(Tp::AbstractProtocolInterfacePtr::dynamicCast(addrIface)); /* presenceIface = Tp::BaseProtocolPresenceInterface::create(); presenceIface->setStatuses(Tp::PresenceSpecList(ConnectConnection::getConnectStatusSpecMap())); plugInterface(Tp::AbstractProtocolInterfacePtr::dynamicCast(presenceIface));*/ Tp::DBusError err; }
MorseConnection::MorseConnection(const QDBusConnection &dbusConnection, const QString &cmName, const QString &protocolName, const QVariantMap ¶meters) : Tp::BaseConnection(dbusConnection, cmName, protocolName, parameters), m_core(0), m_authReconnectionsCount(0) { qDebug() << Q_FUNC_INFO; /* Connection.Interface.Contacts */ contactsIface = Tp::BaseConnectionContactsInterface::create(); contactsIface->setGetContactAttributesCallback(Tp::memFun(this, &MorseConnection::getContactAttributes)); contactsIface->setContactAttributeInterfaces(QStringList() << TP_QT_IFACE_CONNECTION << TP_QT_IFACE_CONNECTION_INTERFACE_CONTACT_LIST << TP_QT_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE << TP_QT_IFACE_CONNECTION_INTERFACE_ALIASING << TP_QT_IFACE_CONNECTION_INTERFACE_AVATARS); plugInterface(Tp::AbstractConnectionInterfacePtr::dynamicCast(contactsIface)); /* Connection.Interface.SimplePresence */ simplePresenceIface = Tp::BaseConnectionSimplePresenceInterface::create(); simplePresenceIface->setStatuses(getSimpleStatusSpecMap()); simplePresenceIface->setSetPresenceCallback(Tp::memFun(this,&MorseConnection::setPresence)); plugInterface(Tp::AbstractConnectionInterfacePtr::dynamicCast(simplePresenceIface)); /* Connection.Interface.ContactList */ contactListIface = Tp::BaseConnectionContactListInterface::create(); contactListIface->setContactListPersists(true); contactListIface->setCanChangeContactList(true); contactListIface->setDownloadAtConnection(true); contactListIface->setGetContactListAttributesCallback(Tp::memFun(this, &MorseConnection::getContactListAttributes)); contactListIface->setRequestSubscriptionCallback(Tp::memFun(this, &MorseConnection::requestSubscription)); contactListIface->setRemoveContactsCallback(Tp::memFun(this, &MorseConnection::removeContacts)); plugInterface(Tp::AbstractConnectionInterfacePtr::dynamicCast(contactListIface)); /* Connection.Interface.Aliasing */ aliasingIface = Tp::BaseConnectionAliasingInterface::create(); aliasingIface->setGetAliasesCallback(Tp::memFun(this, &MorseConnection::getAliases)); aliasingIface->setSetAliasesCallback(Tp::memFun(this, &MorseConnection::setAliases)); plugInterface(Tp::AbstractConnectionInterfacePtr::dynamicCast(aliasingIface)); /* Connection.Interface.Avatars */ avatarsIface = Tp::BaseConnectionAvatarsInterface::create(); avatarsIface->setAvatarDetails(Tp::AvatarSpec(/* supportedMimeTypes */ QStringList() << QLatin1String("image/jpeg"), /* minHeight */ 0, /* maxHeight */ 160, /* recommendedHeight */ 160, /* minWidth */ 0, /* maxWidth */ 160, /* recommendedWidth */ 160, /* maxBytes */ 10240)); avatarsIface->setGetKnownAvatarTokensCallback(Tp::memFun(this, &MorseConnection::getKnownAvatarTokens)); avatarsIface->setRequestAvatarsCallback(Tp::memFun(this, &MorseConnection::requestAvatars)); plugInterface(Tp::AbstractConnectionInterfacePtr::dynamicCast(avatarsIface)); /* Connection.Interface.Requests */ requestsIface = Tp::BaseConnectionRequestsInterface::create(this); /* Fill requestableChannelClasses */ Tp::RequestableChannelClass personalChat; personalChat.fixedProperties[TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")] = TP_QT_IFACE_CHANNEL_TYPE_TEXT; personalChat.fixedProperties[TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")] = Tp::HandleTypeContact; personalChat.allowedProperties.append(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle")); personalChat.allowedProperties.append(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID")); requestsIface->requestableChannelClasses << personalChat; #if TP_QT_VERSION >= TP_QT_VERSION_CHECK(0, 9, 7) Tp::RequestableChannelClass groupChat; groupChat.fixedProperties[TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")] = TP_QT_IFACE_CHANNEL_TYPE_TEXT; groupChat.fixedProperties[TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")] = Tp::HandleTypeRoom; groupChat.allowedProperties.append(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle")); groupChat.allowedProperties.append(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID")); requestsIface->requestableChannelClasses << groupChat; Tp::RequestableChannelClass chatList; chatList.fixedProperties[TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType")] = TP_QT_IFACE_CHANNEL_TYPE_ROOM_LIST; chatList.fixedProperties[TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType")] = Tp::HandleTypeNone; requestsIface->requestableChannelClasses << chatList; #endif plugInterface(Tp::AbstractConnectionInterfacePtr::dynamicCast(requestsIface)); m_selfPhone = parameters.value(QLatin1String("account")).toString(); m_keepaliveInterval = parameters.value(QLatin1String("keepalive-interval"), CTelegramCore::defaultPingInterval() / 1000).toUInt(); setSelfHandle(addContact(m_selfPhone)); setConnectCallback(Tp::memFun(this, &MorseConnection::doConnect)); setInspectHandlesCallback(Tp::memFun(this, &MorseConnection::inspectHandles)); setCreateChannelCallback(Tp::memFun(this, &MorseConnection::createChannelCB)); setRequestHandlesCallback(Tp::memFun(this, &MorseConnection::requestHandles)); connect(this, SIGNAL(disconnected()), SLOT(whenDisconnected())); }