// SPDX-FileCopyrightText: 2021 Linus Jahn // // SPDX-License-Identifier: LGPL-2.1-or-later #include "QXmppUserTuneManager.h" #include "QXmppConstants_p.h" #include "QXmppPep_p.h" #include "QXmppTuneItem.h" using namespace QXmpp::Private; static QXmppPubSubManager *pubSub(QXmppClient *client) { return client->findExtension(); } /// /// \class QXmppUserTuneManager /// /// The QXmppUserTuneManager implements \xep{0118, User Tune}. You'll receive /// tune updates from all presence subscriptions. You can publish tune /// information on the user's account (publish()) and request tune information /// from specific accounts (request()). /// /// The manager needs to be added to the client first and also requires the /// QXmppPubSubManager. /// \code /// QXmppClient client; /// auto *pubSubManager = client.addNewExtension(); /// auto *tuneManager = client.addNewExtension(); /// \endcode /// /// \since QXmpp 1.5 /// /// \ingroup Managers /// /// /// \typedef QXmppUserTuneManager::Item /// /// Used pubsub item type. /// /// /// \typedef QXmppUserTuneManager::GetResult /// /// Contains the User Tune information or an error. /// /// /// \typedef QXmppUserTuneManager::PublishResult /// /// Contains the ID of the published item on success or a stanza error. /// /// /// \fn QXmppUserTuneManager::itemReceived() /// /// Emitted whenever a \xep{0118, User Tune} items event arrives. /// QXmppUserTuneManager::QXmppUserTuneManager() { } QStringList QXmppUserTuneManager::discoveryFeatures() const { return { ns_tune, ns_tune_notify, }; } /// /// Request User Tune information from an account. /// /// \param jid The account JID to request. /// auto QXmppUserTuneManager::request(const QString &jid) -> QFuture { return Pep::request(pubSub(client()), jid, ns_tune, this); } /// /// Publishes User Tune information on the user's account. /// /// \param item The User Tune item to be published. /// auto QXmppUserTuneManager::publish(const QXmppTuneItem &item) -> QFuture { return pubSub(client())->publishPepItem(ns_tune, item); } /// \cond bool QXmppUserTuneManager::handlePubSubEvent(const QDomElement &element, const QString &pubSubService, const QString &nodeName) { return Pep::handlePubSubEvent(element, pubSubService, nodeName, ns_tune, this, &QXmppUserTuneManager::itemReceived); } /// \endcond