aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-07-20 09:35:00 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-07-20 09:35:00 -0700
commit43798702ff40586031f480b11a59c21cf7b4228b (patch)
tree248b77fcdf77b6d4c948fca7325a7231944e48b1
parent947fda14c5d10916572ae1232987684205632c71 (diff)
downloadsubsurface-43798702ff40586031f480b11a59c21cf7b4228b.tar.gz
Only enable Bluetooth support if building against Qt5.4 or newer
Also remove the quick hack from commit 947fda14c5d1 ("Bluetooth support: quick build fix for Qt5.2"). I should have thought this through before pushing that commit, but oh well. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--CMakeLists.txt13
-rw-r--r--qt-ui/btdeviceselectiondialog.cpp2
-rw-r--r--qt-ui/downloadfromdivecomputer.cpp15
-rw-r--r--qt-ui/downloadfromdivecomputer.h10
4 files changed, 34 insertions, 6 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c3a2b8740..7b7f783b9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,6 +19,7 @@ option(USE_LIBGIT23_API "allow building with libgit2 master" OFF)
option(FORCE_LIBSSH "force linking with libssh to workaround libgit2 bug" ON)
option(SUBSURFACE_MOBILE "build the QtQuick version for mobile device" OFF)
option(FBSUPPORT "allow posting to Facebook" ON)
+option(BTSUPPORT "enable support for QtBluetooth (requires Qt5.4 or newer)" ON)
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
@@ -177,6 +178,11 @@ find_package(Qt5 REQUIRED COMPONENTS Core Concurrent Widgets Network ${WEBKIT_PK
set(QT_LIBRARIES Qt5::Core Qt5::Concurrent Qt5::Widgets Qt5::Network ${WEBKIT_LIB} ${PRINTING_LIB} Qt5::Svg ${QT_QUICK_LIB} ${ANDROID_LIB} Qt5::Bluetooth)
set(QT_TEST_LIBRARIES ${QT_LIBRARIES} Qt5::Test)
+if ("${Qt5Core_VERSION_STRING}" STRLESS "5.4.0")
+ set(BTSUPPORT OFF)
+ message(STATUS "Turning off Bluetooth support as Qt version ${Qt5Core_VERSION_STRING} is insufficiant for that")
+endif()
+
# Generate the ssrf-config.h every 'make'
file(WRITE ${CMAKE_BINARY_DIR}/version.h.in
"#define VERSION_STRING \"@VERSION_STRING@\"
@@ -331,6 +337,11 @@ if(FBSUPPORT)
set(SOCIALNETWORKS qt-ui/socialnetworks.cpp)
endif()
+if(BTSUPPORT)
+ add_definitions(-DBT_SUPPORT)
+ set(BT_SRC_FILES qt-ui/btdeviceselectiondialog.cpp)
+endif()
+
# the data models that will interface
# with the views.
set(SUBSURFACE_MODELS_LIB_SRCS
@@ -360,7 +371,6 @@ source_group("Subsurface Models" FILES ${SUBSURFACE_MODELS})
set(SUBSURFACE_INTERFACE
qt-ui/updatemanager.cpp
qt-ui/about.cpp
- qt-ui/btdeviceselectiondialog.cpp
qt-ui/divecomputermanagementdialog.cpp
qt-ui/divelistview.cpp
qt-ui/diveplanner.cpp
@@ -392,6 +402,7 @@ set(SUBSURFACE_INTERFACE
qt-ui/qtwaitingspinner.cpp
${SUBSURFACE_PRINTING_SRCS}
${SOCIALNETWORKS}
+ ${BT_SRC_FILES}
)
source_group("Subsurface Interface" FILES ${SUBSURFACE_INTERFACE})
diff --git a/qt-ui/btdeviceselectiondialog.cpp b/qt-ui/btdeviceselectiondialog.cpp
index e883536cd..007fe940e 100644
--- a/qt-ui/btdeviceselectiondialog.cpp
+++ b/qt-ui/btdeviceselectiondialog.cpp
@@ -362,7 +362,6 @@ void BtDeviceSelectionDialog::initializeDeviceDiscoveryAgent()
// Intialize the discovery agent
remoteDeviceDiscoveryAgent = new QBluetoothDeviceDiscoveryAgent(localDevice->address());
-#if QT_VERSION >= 0x050300
// Test if the discovery agent was successfully created
if (remoteDeviceDiscoveryAgent->error() == QBluetoothDeviceDiscoveryAgent::InvalidBluetoothAdapterError) {
ui->dialogStatus->setText(QString("The device discovery agent was not created because the %1 address does not "
@@ -372,7 +371,6 @@ void BtDeviceSelectionDialog::initializeDeviceDiscoveryAgent()
ui->clear->setEnabled(false);
return;
}
-#endif
connect(remoteDeviceDiscoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)),
this, SLOT(addRemoteDevice(QBluetoothDeviceInfo)));
diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp
index 276e4047c..4127376ac 100644
--- a/qt-ui/downloadfromdivecomputer.cpp
+++ b/qt-ui/downloadfromdivecomputer.cpp
@@ -100,10 +100,15 @@ DownloadFromDCWidget::DownloadFromDCWidget(QWidget *parent, Qt::WindowFlags f) :
ui.downloadCancelRetryButton->setEnabled(true);
ui.downloadCancelRetryButton->setText(tr("Download"));
+#if defined(BT_SUPPORT)
btDeviceSelectionDialog = 0;
ui.chooseBluetoothDevice->setEnabled(ui.bluetoothMode->isChecked());
connect(ui.bluetoothMode, SIGNAL(stateChanged(int)), this, SLOT(enableBluetoothMode(int)));
connect(ui.chooseBluetoothDevice, SIGNAL(clicked()), this, SLOT(selectRemoteBluetoothDevice()));
+#else
+ ui.bluetoothMode->hide();
+ ui.chooseBluetoothDevice->hide();
+#endif
}
void DownloadFromDCWidget::updateProgressBar()
@@ -313,11 +318,15 @@ void DownloadFromDCWidget::on_downloadCancelRetryButton_clicked()
data.vendor = strdup(ui.vendor->currentText().toUtf8().data());
data.product = strdup(ui.product->currentText().toUtf8().data());
+#if defined(BT_SUPPORT)
data.bluetooth_mode = ui.bluetoothMode->isChecked();
if (data.bluetooth_mode) {
// Get the selected device address
data.devname = strdup(btDeviceSelectionDialog->getSelectedDeviceAddress().toUtf8().data());
- } else if (same_string(data.vendor, "Uemis")) {
+ } else
+ // this breaks an "else if" across lines... not happy...
+#endif
+ if (same_string(data.vendor, "Uemis")) {
char *colon;
char *devname = strdup(ui.device->currentText().toUtf8().data());
@@ -523,10 +532,13 @@ void DownloadFromDCWidget::markChildrenAsEnabled()
ui.chooseDumpFile->setEnabled(true);
ui.selectAllButton->setEnabled(true);
ui.unselectAllButton->setEnabled(true);
+#if defined(BT_SUPPORT)
ui.bluetoothMode->setEnabled(true);
ui.chooseBluetoothDevice->setEnabled(true);
+#endif
}
+#if defined(BT_SUPPORT)
void DownloadFromDCWidget::selectRemoteBluetoothDevice()
{
if (!btDeviceSelectionDialog) {
@@ -555,6 +567,7 @@ void DownloadFromDCWidget::enableBluetoothMode(int state)
if (state == Qt::Checked)
selectRemoteBluetoothDevice();
}
+#endif
static void fillDeviceList(const char *name, void *data)
{
diff --git a/qt-ui/downloadfromdivecomputer.h b/qt-ui/downloadfromdivecomputer.h
index 734e5f7d1..7acd49e95 100644
--- a/qt-ui/downloadfromdivecomputer.h
+++ b/qt-ui/downloadfromdivecomputer.h
@@ -10,7 +10,10 @@
#include "libdivecomputer.h"
#include "configuredivecomputerdialog.h"
#include "ui_downloadfromdivecomputer.h"
+
+#if defined(BT_SUPPORT)
#include "btdeviceselectiondialog.h"
+#endif
class QStringListModel;
@@ -78,12 +81,13 @@ slots:
void updateProgressBar();
void checkLogFile(int state);
void checkDumpFile(int state);
- void enableBluetoothMode(int state);
void pickDumpFile();
void pickLogFile();
+#if defined(BT_SUPPORT)
+ void enableBluetoothMode(int state);
void selectRemoteBluetoothDevice();
void bluetoothSelectionDialogIsFinished(int result);
-
+#endif
private:
void markChildrenAsDisabled();
void markChildrenAsEnabled();
@@ -108,7 +112,9 @@ private:
bool dumpWarningShown;
OstcFirmwareCheck *ostcFirmwareCheck;
DiveImportedModel *diveImportedModel;
+#if defined(BT_SUPPORT)
BtDeviceSelectionDialog *btDeviceSelectionDialog;
+#endif
public:
bool preferDownloaded();