#include "bluetoothdevicemodel.h"
BluetoothDevicesModel::BluetoothDevicesModel(QObject *parent) :
- QAbstractListModel(parent), adapter(NULL)
+ QAbstractListModel(parent), m_connected(false), adapter(NULL)
{
manager = new OrgBluezManagerInterface(
"org.bluez",
beginRemoveRows(QModelIndex(), 0, m_devices.size()-1);
foreach(BluetoothDevice* device, m_devices)
{
-
- delete device;
+ updateConnected(device->connected());
+ device->deleteLater();
}
m_devices.clear();
endRemoveRows();
{
BluetoothDevice* device = new BluetoothDevice(devicepath,this);
+ updateConnected(device->connected());
connect(device,SIGNAL(propertyChanged(QString,QVariant)),this,SLOT(devicePropertyChanged(QString,QVariant)));
beginInsertRows(QModelIndex(),m_devices.size(),m_devices.size());
emit devicePaired(device);
}
+ else if(name == "Connected")
+ {
+ updateConnected(value.toBool());
+ }
int row = m_devices.indexOf(device);
if(row == -1) return; ///device doesn't exist.
discoverableTimeoutChanged(value.variant().toInt());
}
}
+
+void BluetoothDevicesModel::updateConnected(bool deviceconnectedStatus)
+{
+ if(deviceconnectedStatus)
+ {
+ if(!m_connected)
+ {
+ m_connected = true;
+ connectedChanged(m_connected);
+ }
+ }
+ else
+ {
+ bool temp = false;
+ foreach(BluetoothDevice* device, devices())
+ {
+ temp |= device->connected();
+ }
+
+ if(temp != m_connected)
+ {
+ m_connected = temp;
+ connectedChanged(m_connected);
+ }
+ }
+}
Q_PROPERTY(bool discoverable READ discoverable WRITE makeDiscoverable NOTIFY discoverableChanged);
Q_PROPERTY(int discoverableTimeout READ discoverableTimeout WRITE setDiscoverableTimeout NOTIFY discoverableTimeoutChanged);
Q_PROPERTY(bool adapterPresent READ adapterPresent NOTIFY adapterChanged);
+ Q_PROPERTY(bool connected READ connected NOTIFY connectedChanged);
+
public:
explicit BluetoothDevicesModel(QObject *parent = 0);
QList<BluetoothDevice*> devices(){ return m_devices; }
+ bool connected() { return m_connected; }
+
BluetoothDevice* device(QString path);
void makePowered(bool poweredValue);
bool powered();
void devicePaired(BluetoothDevice* device);
void discoverableChanged(bool discoverable);
void adapterChanged(bool adapterPresent);
+ void connectedChanged(bool isConnected);
private:
+ void updateConnected(bool deviceconnectedStatus);
+
+ bool m_connected;
OrgBluezManagerInterface *manager;
OrgBluezAdapterInterface *adapter;
QList<BluetoothDevice*> m_devices;