File indexing completed on 2024-12-08 12:15:28

0001 /*
0002  * SPDX-FileCopyrightText: 2014-2015 David Rosca <nowrep@gmail.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005  */
0006 
0007 #include "obexagentmanager.h"
0008 
0009 #include <QDBusConnection>
0010 #include <QDBusMessage>
0011 
0012 ObexAgentManager::ObexAgentManager(QObject *parent)
0013     : QDBusAbstractAdaptor(parent)
0014 {
0015     setName(QStringLiteral("org.bluez.obex.AgentManager1"));
0016     setPath(QDBusObjectPath(QStringLiteral("/org/bluez/obex")));
0017 }
0018 
0019 void ObexAgentManager::runAction(const QString &actionName, const QVariantMap &properties)
0020 {
0021     if (actionName == QLatin1String("authorize-push")) {
0022         runAuthorizePushAction(properties);
0023     }
0024 }
0025 
0026 void ObexAgentManager::RegisterAgent(const QDBusObjectPath &path, const QDBusMessage &msg)
0027 {
0028     m_agent = path;
0029     m_service = msg.service();
0030 }
0031 
0032 void ObexAgentManager::UnregisterAgent(const QDBusObjectPath &path, const QDBusMessage &msg)
0033 {
0034     if (m_agent == path && m_service == msg.service()) {
0035         m_agent = QDBusObjectPath();
0036         m_service.clear();
0037     }
0038 }
0039 
0040 void ObexAgentManager::runAuthorizePushAction(const QVariantMap &properties)
0041 {
0042     Q_UNUSED(properties)
0043 
0044     QDBusMessage call = QDBusMessage::createMethodCall(m_service, m_agent.path(), QStringLiteral("org.bluez.obex.Agent1"), QStringLiteral("AuthorizePush"));
0045 
0046     call << QVariant::fromValue(QDBusObjectPath(QStringLiteral("/org/bluez/session1/transfer1")));
0047     const QString &fileName = QDBusConnection::sessionBus().call(call).arguments().first().toString();
0048     Q_UNUSED(fileName)
0049 }
0050 
0051 void ObexAgentManager::runCancelAction()
0052 {
0053     QDBusMessage call = QDBusMessage::createMethodCall(m_service, m_agent.path(), QStringLiteral("org.bluez.obex.Agent1"), QStringLiteral("Cancel"));
0054     QDBusConnection::sessionBus().call(call);
0055 }
0056 
0057 void ObexAgentManager::runReleaseAction()
0058 {
0059     QDBusMessage call = QDBusMessage::createMethodCall(m_service, m_agent.path(), QStringLiteral("org.bluez.obex.Agent1"), QStringLiteral("Release"));
0060     QDBusConnection::sessionBus().call(call);
0061 }
0062 
0063 #include "moc_obexagentmanager.cpp"