Add ConnectionListModel

We'll use that to do a better job of showing the connection used when
talking to a dive computer.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2017-07-16 21:45:21 -07:00
parent dd1bdd3f81
commit c21845aa01
2 changed files with 58 additions and 0 deletions

View file

@ -9,6 +9,47 @@ extern QMap<QString, dc_descriptor_t *> descriptorLookup;
BTDiscovery *BTDiscovery::m_instance = NULL;
ConnectionListModel::ConnectionListModel(QObject *parent) :
QAbstractListModel(parent)
{
}
QHash <int, QByteArray> ConnectionListModel::roleNames() const
{
QHash<int, QByteArray> roles;
roles[AddressRole] = "address";
return roles;
}
QVariant ConnectionListModel::data(const QModelIndex &index, int role) const
{
if (index.row() < 0 || index.row() >= m_addresses.count())
return QVariant();
if (role != AddressRole)
return QVariant();
return m_addresses[index.row()];
}
QString ConnectionListModel::address(int idx) const
{
if (idx < 0 || idx >> m_addresses.count())
return QString();
return m_addresses[idx];
}
int ConnectionListModel::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent)
return m_addresses.count();
}
void ConnectionListModel::addAddress(const QString address)
{
beginInsertRows(QModelIndex(), rowCount(), rowCount());
m_addresses.append(address);
endInsertRows();
}
static dc_descriptor_t *getDeviceType(QString btName)
// central function to convert a BT name to a Subsurface known vendor/model pair
{

View file

@ -5,6 +5,7 @@
#include <QObject>
#include <QString>
#include <QLoggingCategory>
#include <QAbstractListModel>
#if defined(BT_SUPPORT)
#include <QBluetoothLocalDevice>
#include <QBluetoothDeviceDiscoveryAgent>
@ -17,6 +18,22 @@
#include <QAndroidJniEnvironment>
#endif
class ConnectionListModel : public QAbstractListModel {
Q_OBJECT
public:
enum CLMRole {
AddressRole = Qt::UserRole + 1
};
ConnectionListModel(QObject *parent = 0);
QHash<int, QByteArray> roleNames() const;
QVariant data(const QModelIndex &index, int role = AddressRole) const;
QString address(int idx) const;
int rowCount(const QModelIndex &parent = QModelIndex()) const;
void addAddress(const QString address);
private:
QStringList m_addresses;
};
class BTDiscovery : public QObject {
Q_OBJECT