Make bluetooth work if enabled after kdeconnectd is started

Previously, if kdeconnectd was started with bluetooth disabled/unplugged
it would continue to not work until kdeconnectd is restarted.
This commit is contained in:
Rob Emery 2024-10-04 04:25:51 +00:00 committed by Albert Vaca Cintora
parent 5fa83ca15f
commit 251ea971c5
3 changed files with 18 additions and 11 deletions

View file

@ -30,6 +30,12 @@ BluetoothLinkProvider::BluetoothLinkProvider()
} }
void BluetoothLinkProvider::onStart() void BluetoothLinkProvider::onStart()
{
qCDebug(KDECONNECT_CORE) << "BluetoothLinkProvider::onStart executed";
tryToInitialise();
}
void BluetoothLinkProvider::tryToInitialise()
{ {
QBluetoothLocalDevice localDevice; QBluetoothLocalDevice localDevice;
if (!localDevice.isValid()) { if (!localDevice.isValid()) {
@ -37,18 +43,16 @@ void BluetoothLinkProvider::onStart()
return; return;
} }
qCDebug(KDECONNECT_CORE) << "BluetoothLinkProvider::onStart executed"; if (!mBluetoothServer) {
qCDebug(KDECONNECT_CORE) << "BluetoothLinkProvider::onNetworkChange re-setting up mBluetoothServer";
mBluetoothServer = new QBluetoothServer(QBluetoothServiceInfo::RfcommProtocol, this); mBluetoothServer = new QBluetoothServer(QBluetoothServiceInfo::RfcommProtocol, this);
mBluetoothServer->setSecurityFlags(QBluetooth::Security::Encryption | QBluetooth::Security::Secure); mBluetoothServer->setSecurityFlags(QBluetooth::Security::Encryption | QBluetooth::Security::Secure);
connect(mBluetoothServer, &QBluetoothServer::newConnection, this, &BluetoothLinkProvider::serverNewConnection); connect(mBluetoothServer, &QBluetoothServer::newConnection, this, &BluetoothLinkProvider::serverNewConnection);
qCDebug(KDECONNECT_CORE) << "BluetoothLinkProvider::About to start server listen"; qCDebug(KDECONNECT_CORE) << "BluetoothLinkProvider::onNetworkChange About to start server listen";
mKdeconnectService = mBluetoothServer->listen(mServiceUuid, QStringLiteral("KDE Connect")); mKdeconnectService = mBluetoothServer->listen(mServiceUuid, QStringLiteral("KDE Connect"));
}
// Disabled for the moment as once the server is listening, the client will not be able to connect anyway
// mServiceDiscoveryAgent->start();
// connectTimer->start();
} }
void BluetoothLinkProvider::onStop() void BluetoothLinkProvider::onStop()
@ -65,9 +69,10 @@ void BluetoothLinkProvider::onStop()
mBluetoothServer->deleteLater(); mBluetoothServer->deleteLater();
} }
// I'm in a new network, let's be polite and introduce myself
void BluetoothLinkProvider::onNetworkChange() void BluetoothLinkProvider::onNetworkChange()
{ {
qCDebug(KDECONNECT_CORE) << "BluetoothLinkProvider::onNetworkChange executed";
tryToInitialise();
} }
void BluetoothLinkProvider::connectError() void BluetoothLinkProvider::connectError()

View file

@ -62,6 +62,7 @@ private Q_SLOTS:
private: private:
void addLink(BluetoothDeviceLink *deviceLink, const QString &deviceId); void addLink(BluetoothDeviceLink *deviceLink, const QString &deviceId);
QList<QBluetoothAddress> getPairedDevices(); QList<QBluetoothAddress> getPairedDevices();
void tryToInitialise();
QBluetoothUuid mServiceUuid; QBluetoothUuid mServiceUuid;
QPointer<QBluetoothServer> mBluetoothServer; QPointer<QBluetoothServer> mBluetoothServer;

View file

@ -127,6 +127,7 @@ void Daemon::forceOnNetworkChange()
{ {
qCDebug(KDECONNECT_CORE) << "Sending onNetworkChange to" << d->m_linkProviders.size() << "LinkProviders"; qCDebug(KDECONNECT_CORE) << "Sending onNetworkChange to" << d->m_linkProviders.size() << "LinkProviders";
for (LinkProvider *a : std::as_const(d->m_linkProviders)) { for (LinkProvider *a : std::as_const(d->m_linkProviders)) {
qCDebug(KDECONNECT_CORE) << "Sending onNetworkChange to: " << a->name();
a->onNetworkChange(); a->onNetworkChange();
} }
} }