aboutsummaryrefslogtreecommitdiffstats
path: root/mobile-widgets/qmlmanager.cpp
diff options
context:
space:
mode:
authorGravatar Jan Mulder <jlmulder@xs4all.nl>2017-10-12 09:43:40 +0200
committerGravatar Jan Mulder <jlmulder@xs4all.nl>2017-10-12 09:43:40 +0200
commitba4058667a21a278a394054fea70595358ac41f2 (patch)
tree64fdae97a11d6db2505029eef98da9e9a8abfb92 /mobile-widgets/qmlmanager.cpp
parentfa5e685279b66b14d8069b5214890ca7148487ef (diff)
downloadsubsurface-ba4058667a21a278a394054fea70595358ac41f2.tar.gz
mobile: enable switching BT on/off during session.
This commit implements possible switching BT on and off during a session, so not needing a restart of the app when the user forgot to switch it on when starting the app. For this, the following needed to be done: 1) create a handler that reacts on local BT device status changes. 2) repopulate the connection list in the download screen when a BT status change is detected. Notice the subtile change of the Q_INVOKABLE btEnabled() function to a Q_PROPERTY. This gives a nice dynamic behaviour when switching BT on/off with the app open. Fixes: #556 Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
Diffstat (limited to 'mobile-widgets/qmlmanager.cpp')
-rw-r--r--mobile-widgets/qmlmanager.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp
index dc37fd4b0..5fbe61614 100644
--- a/mobile-widgets/qmlmanager.cpp
+++ b/mobile-widgets/qmlmanager.cpp
@@ -12,6 +12,7 @@
#include <QElapsedTimer>
#include <QTimer>
#include <QDateTime>
+#include <QBluetoothLocalDevice>
#include "qt-models/divelistmodel.h"
#include "qt-models/gpslistmodel.h"
@@ -77,6 +78,23 @@ extern "C" int gitProgressCB(const char *text)
return 0;
}
+void QMLManager::btHostModeChange(QBluetoothLocalDevice::HostMode state)
+{
+ BTDiscovery *btDiscovery = BTDiscovery::instance();
+
+ qDebug() << "btHostModeChange to " << state;
+ if (state != QBluetoothLocalDevice::HostPoweredOff) {
+ connectionListModel.removeAllAddresses();
+ btDiscovery->BTDiscoveryReDiscover();
+ m_btEnabled = btDiscovery->btAvailable();
+ } else {
+ connectionListModel.removeAllAddresses();
+ set_non_bt_addresses();
+ m_btEnabled = false;
+ }
+ emit btEnabledChanged();
+}
+
QMLManager::QMLManager() : m_locationServiceEnabled(false),
m_verboseEnabled(false),
reply(0),
@@ -117,6 +135,8 @@ QMLManager::QMLManager() : m_locationServiceEnabled(false),
// to QML, but that doesn't seem to always work
BTDiscovery *btDiscovery = BTDiscovery::instance();
m_btEnabled = btDiscovery->btAvailable();
+ connect(&btDiscovery->localBtDevice, &QBluetoothLocalDevice::hostModeStateChanged,
+ this, &QMLManager::btHostModeChange);
#else
m_btEnabled = false;
#endif
@@ -1659,6 +1679,11 @@ bool QMLManager::btEnabled() const
return m_btEnabled;
}
+void QMLManager::setBtEnabled(bool value)
+{
+ m_btEnabled = value;
+}
+
#if defined (Q_OS_ANDROID)
void writeToAppLogFile(QString logText)