mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
The keyword "virtual" signalizes that the function is virtual, i.e. the function of the derived class is called, even if the call is on the parent class. It is not necessary to repeat the "virtual" keyword in derived classes. To highlight derived virtual functions, the keyword "override" should be used instead. It results in a hard compile- error, if no function is overridden, thus avoiding subtle bugs. Replace "virtual" by "override" where appropriate. Moreover, replace Q_DECL_OVERRIDE by override, since we require reasonably recent compilers anyway. Likewise, replace /* reimp */ by "override" for consistency and compiler support. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
93 lines
2.7 KiB
C++
93 lines
2.7 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#ifndef BTDEVICESELECTIONDIALOG_H
|
|
#define BTDEVICESELECTIONDIALOG_H
|
|
|
|
#include <QDialog>
|
|
#include <QListWidgetItem>
|
|
#include <QPointer>
|
|
#include <QtBluetooth/QBluetoothLocalDevice>
|
|
#include <QtBluetooth/QBluetoothDeviceDiscoveryAgent>
|
|
|
|
#if defined(Q_OS_WIN)
|
|
#include <QThread>
|
|
#include <winsock2.h>
|
|
#include <ws2bth.h>
|
|
|
|
#define SUCCESS 0
|
|
#define BTH_ADDR_BUF_LEN 40
|
|
#define BTH_ADDR_PRETTY_STRING_LEN 17 // there are 6 two-digit hex values and 5 colons
|
|
|
|
#undef ERROR // this is already declared in our headers
|
|
#undef IGNORE // this is already declared in our headers
|
|
#undef DC_VERSION // this is already declared in libdivecomputer header
|
|
#endif
|
|
|
|
namespace Ui {
|
|
class BtDeviceSelectionDialog;
|
|
}
|
|
|
|
#if defined(Q_OS_WIN)
|
|
class WinBluetoothDeviceDiscoveryAgent : public QThread {
|
|
Q_OBJECT
|
|
signals:
|
|
void deviceDiscovered(const QBluetoothDeviceInfo &info);
|
|
void error(QBluetoothDeviceDiscoveryAgent::Error error);
|
|
|
|
public:
|
|
WinBluetoothDeviceDiscoveryAgent(QObject *parent);
|
|
~WinBluetoothDeviceDiscoveryAgent();
|
|
bool isActive() const;
|
|
QString errorToString() const;
|
|
QBluetoothDeviceDiscoveryAgent::Error error() const;
|
|
void run() override;
|
|
void stop();
|
|
|
|
private:
|
|
bool running;
|
|
bool stopped;
|
|
QString lastErrorToString;
|
|
QBluetoothDeviceDiscoveryAgent::Error lastError;
|
|
};
|
|
#endif
|
|
|
|
class BtDeviceSelectionDialog : public QDialog {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit BtDeviceSelectionDialog(QWidget *parent = 0);
|
|
~BtDeviceSelectionDialog();
|
|
QString getSelectedDeviceAddress();
|
|
QString getSelectedDeviceName();
|
|
QString getSelectedDeviceText();
|
|
static QString formatDeviceText(const QString &address, const QString &name);
|
|
|
|
private slots:
|
|
void on_changeDeviceState_clicked();
|
|
void on_save_clicked();
|
|
void on_clear_clicked();
|
|
void on_scan_clicked();
|
|
void remoteDeviceScanFinished();
|
|
void hostModeStateChanged(QBluetoothLocalDevice::HostMode mode);
|
|
void addRemoteDevice(const QBluetoothDeviceInfo &remoteDeviceInfo);
|
|
void currentItemChanged(QListWidgetItem *item,QListWidgetItem *previous);
|
|
void displayPairingMenu(const QPoint &pos);
|
|
void pairingFinished(const QBluetoothAddress &address,QBluetoothLocalDevice::Pairing pairing);
|
|
void error(QBluetoothLocalDevice::Error error);
|
|
void deviceDiscoveryError(QBluetoothDeviceDiscoveryAgent::Error error);
|
|
void localDeviceChanged(int);
|
|
|
|
private:
|
|
Ui::BtDeviceSelectionDialog *ui;
|
|
#if defined(Q_OS_WIN)
|
|
WinBluetoothDeviceDiscoveryAgent *remoteDeviceDiscoveryAgent;
|
|
#else
|
|
QBluetoothLocalDevice *localDevice;
|
|
QBluetoothDeviceDiscoveryAgent *remoteDeviceDiscoveryAgent;
|
|
#endif
|
|
QScopedPointer<QBluetoothDeviceInfo> selectedRemoteDeviceInfo;
|
|
|
|
void updateLocalDeviceInformation();
|
|
void initializeDeviceDiscoveryAgent();
|
|
};
|
|
|
|
#endif // BTDEVICESELECTIONDIALOG_H
|