From 1ab6b50a34a0127b1802b0439b9317d0245b6769 Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Mon, 29 May 2017 11:56:13 -0700 Subject: [PATCH] QML UI: start BT discovery So far all this does is list all the BT devices that it finds (and I worry if this will have negative battery implications on a mobile device), but this should allow us to connect to a standard BT dive computer (but that will of course require more code to pick the right device). Signed-off-by: Dirk Hohndel --- mobile-widgets/qmlmanager.cpp | 20 ++++++++++++++++++++ mobile-widgets/qmlmanager.h | 11 +++++++++++ 2 files changed, 31 insertions(+) diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp index 4d2999049..f10564a94 100644 --- a/mobile-widgets/qmlmanager.cpp +++ b/mobile-widgets/qmlmanager.cpp @@ -89,6 +89,18 @@ QMLManager::QMLManager() : m_locationServiceEnabled(false), m_credentialStatus(UNKNOWN), alreadySaving(false) { +#if BT_SUPPORT + if (localBtDevice.isValid()) { + localBtDevice.powerOn(); + QString localDeviceName = "localDevice " + localBtDevice.name() + " is valid, starting discovery"; + appendTextToLog(localDeviceName.toUtf8().data()); + discoveryAgent = new QBluetoothDeviceDiscoveryAgent(this); + connect(discoveryAgent, &QBluetoothDeviceDiscoveryAgent::deviceDiscovered, this, &QMLManager::btDeviceDiscovered); + discoveryAgent->start(); + } else { + appendTextToLog("localBtDevice isn't valid"); + } +#endif m_instance = this; m_lastDevicePixelRatio = qApp->devicePixelRatio(); connect(qobject_cast(QApplication::instance()), &QApplication::applicationStateChanged, this, &QMLManager::applicationStateChanged); @@ -191,6 +203,14 @@ void QMLManager::mergeLocalRepo() process_dives(true, false); } +#if BT_SUPPORT +void QMLManager::btDeviceDiscovered(const QBluetoothDeviceInfo &device) +{ + QString newDevice = "Found new device " + device.name() + " (" + device.address().toString() + ")"; + appendTextToLog(newDevice); +} +#endif + void QMLManager::finishSetup() { // Initialize cloud credentials. diff --git a/mobile-widgets/qmlmanager.h b/mobile-widgets/qmlmanager.h index db170704b..16085dc44 100644 --- a/mobile-widgets/qmlmanager.h +++ b/mobile-widgets/qmlmanager.h @@ -7,6 +7,10 @@ #include #include #include +#if BT_SUPPORT +#include +#include +#endif #include "core/gpslocation.h" #include "qt-models/divelistmodel.h" @@ -114,6 +118,9 @@ public: bool showPin() const; void setShowPin(bool enable); Q_INVOKABLE QStringList getDCListFromVendor(const QString& vendor); +#if BT_SUPPORT + void btDeviceDiscovered(const QBluetoothDeviceInfo &device); +#endif public slots: void applicationStateChanged(Qt::ApplicationState state); @@ -196,6 +203,10 @@ private: bool checkDepth(DiveObjectHelper *myDive, struct dive *d, QString depth); bool currentGitLocalOnly; bool m_showPin; +#if BT_SUPPORT + QBluetoothLocalDevice localBtDevice; + QBluetoothDeviceDiscoveryAgent *discoveryAgent; +#endif signals: void cloudUserNameChanged();