File indexing completed on 2024-04-28 16:43:21

0001 /*
0002  * This file is part of the KDE project
0003  *
0004  * SPDX-FileCopyrightText: 2010-2011 Alejandro Fiestas Olivares <afiestas@kde.org>
0005  * SPDX-FileCopyrightText: 2010-2011 UFO Coders <info@ufocoders.com>
0006  *
0007  * SPDX-License-Identifier: LGPL-2.0-or-later
0008  */
0009 
0010 #include "connectingpage.h"
0011 #include "../sendfilewizard.h"
0012 #include "bluedevil_sendfile.h"
0013 
0014 #include <QDBusObjectPath>
0015 
0016 #include <KLocalizedString>
0017 
0018 #include <BluezQt/Device>
0019 #include <BluezQt/InitObexManagerJob>
0020 #include <BluezQt/PendingCall>
0021 
0022 ConnectingPage::ConnectingPage(SendFileWizard *wizard)
0023     : QWizardPage(wizard)
0024     , m_wizard(wizard)
0025 {
0026     setupUi(this);
0027 }
0028 
0029 void ConnectingPage::initializePage()
0030 {
0031     m_device = m_wizard->device();
0032     connLabel->setText(i18nc("Connecting to a Bluetooth device", "Connecting to %1…", m_device->name()));
0033 
0034     m_wizard->setWindowTitle(QString());
0035     m_wizard->setButtonLayout(wizardButtonsLayout());
0036 
0037     // Init BluezQt
0038     BluezQt::ObexManager *manager = new BluezQt::ObexManager(this);
0039     BluezQt::InitObexManagerJob *job = manager->init();
0040     job->start();
0041     connect(job, &BluezQt::InitObexManagerJob::result, this, &ConnectingPage::initJobResult);
0042 }
0043 
0044 bool ConnectingPage::isComplete() const
0045 {
0046     return false;
0047 }
0048 
0049 void ConnectingPage::initJobResult(BluezQt::InitObexManagerJob *job)
0050 {
0051     if (job->error()) {
0052         qCWarning(BLUEDEVIL_SENDFILE_LOG) << "Error initializing obex manager" << job->errorText();
0053         m_wizard->next();
0054         return;
0055     }
0056 
0057     // Create ObjectPush session
0058     QVariantMap map;
0059     map[QStringLiteral("Target")] = QStringLiteral("opp");
0060     BluezQt::PendingCall *call = job->manager()->createSession(m_device->address(), map);
0061     connect(call, &BluezQt::PendingCall::finished, this, &ConnectingPage::createSessionFinished);
0062 }
0063 
0064 void ConnectingPage::createSessionFinished(BluezQt::PendingCall *call)
0065 {
0066     if (call->error()) {
0067         qCWarning(BLUEDEVIL_SENDFILE_LOG) << "Error creating session" << call->errorText();
0068         m_wizard->setErrorMessage(call->errorText());
0069         m_wizard->next();
0070         return;
0071     }
0072 
0073     m_wizard->startTransfer(call->value().value<QDBusObjectPath>());
0074 }
0075 
0076 QList<QWizard::WizardButton> ConnectingPage::wizardButtonsLayout() const
0077 {
0078     QList<QWizard::WizardButton> list;
0079     list << QWizard::Stretch;
0080     list << QWizard::CancelButton;
0081     return list;
0082 }