Commit 05983267 authored by Albert Vaca Cintora's avatar Albert Vaca Cintora

Fixed KCM device list not being refreshed

When a the device visibilita changes
parent f28088c9
...@@ -133,8 +133,6 @@ void Daemon::onNewDeviceLink(const NetworkPackage& identityPackage, DeviceLink* ...@@ -133,8 +133,6 @@ void Daemon::onNewDeviceLink(const NetworkPackage& identityPackage, DeviceLink*
Device* device = mDevices[id]; Device* device = mDevices[id];
device->addLink(dl); device->addLink(dl);
Q_EMIT deviceVisibilityChanged(id, true);
} else { } else {
qDebug() << "It is a new device"; qDebug() << "It is a new device";
...@@ -145,9 +143,10 @@ void Daemon::onNewDeviceLink(const NetworkPackage& identityPackage, DeviceLink* ...@@ -145,9 +143,10 @@ void Daemon::onNewDeviceLink(const NetworkPackage& identityPackage, DeviceLink*
mDevices[id] = device; mDevices[id] = device;
Q_EMIT deviceAdded(id); Q_EMIT deviceAdded(id);
Q_EMIT deviceVisibilityChanged(id, true);
} }
Q_EMIT deviceVisibilityChanged(id, true);
} }
void Daemon::onDeviceReachableStatusChanged() void Daemon::onDeviceReachableStatusChanged()
...@@ -156,9 +155,9 @@ void Daemon::onDeviceReachableStatusChanged() ...@@ -156,9 +155,9 @@ void Daemon::onDeviceReachableStatusChanged()
Device* device = (Device*)sender(); Device* device = (Device*)sender();
QString id = device->id(); QString id = device->id();
if (!device->reachable()) { Q_EMIT deviceVisibilityChanged(id, device->reachable());
Q_EMIT deviceVisibilityChanged(id, false); if (!device->reachable()) {
if (!device->paired()) { if (!device->paired()) {
Q_EMIT deviceRemoved(id); Q_EMIT deviceRemoved(id);
......
...@@ -37,9 +37,12 @@ DevicesModel::DevicesModel(QObject *parent) ...@@ -37,9 +37,12 @@ DevicesModel::DevicesModel(QObject *parent)
deviceAdded(id); deviceAdded(id);
} }
connect(m_dbusInterface,SIGNAL(deviceAdded(QString)),this,SLOT(deviceAdded(QString))); connect(m_dbusInterface, SIGNAL(deviceAdded(QString)),
connect(m_dbusInterface,SIGNAL(deviceVisibilityChanged(QString,bool)),this,SLOT(deviceStatusChanged(QString))); this, SLOT(deviceAdded(QString)));
connect(m_dbusInterface,SIGNAL(deviceRemoved(QString)),this,SLOT(deviceRemoved(QString))); connect(m_dbusInterface, SIGNAL(deviceVisibilityChanged(QString,bool)),
this, SLOT(deviceStatusChanged(QString)));
connect(m_dbusInterface, SIGNAL(deviceRemoved(QString)),
this, SLOT(deviceRemoved(QString)));
} }
DevicesModel::~DevicesModel() DevicesModel::~DevicesModel()
...@@ -64,11 +67,12 @@ void DevicesModel::deviceRemoved(const QString& id) ...@@ -64,11 +67,12 @@ void DevicesModel::deviceRemoved(const QString& id)
refreshDeviceList(); refreshDeviceList();
} }
void DevicesModel::deviceStatusChanged(const QString& id) void DevicesModel::deviceStatusChanged(const QString& id)
{ {
Q_UNUSED(id); Q_UNUSED(id);
emit dataChanged(index(0),index(rowCount())); //FIXME: Emitting dataChanged does not invalidate the view, refreshDeviceList does
//Q_EMIT dataChanged(index(0),index(rowCount()));
refreshDeviceList();
} }
void DevicesModel::refreshDeviceList() void DevicesModel::refreshDeviceList()
...@@ -79,13 +83,16 @@ void DevicesModel::refreshDeviceList() ...@@ -79,13 +83,16 @@ void DevicesModel::refreshDeviceList()
m_deviceList.clear(); m_deviceList.clear();
endRemoveRows(); endRemoveRows();
} }
QList<QString> deviceIds = m_dbusInterface->devices(); QList<QString> deviceIds = m_dbusInterface->devices();
Q_FOREACH(const QString& id, deviceIds) { Q_FOREACH(const QString& id, deviceIds) {
beginInsertRows(QModelIndex(), rowCount(), rowCount() + 1); beginInsertRows(QModelIndex(), rowCount(), rowCount());
m_deviceList.append(new DeviceDbusInterface(id,this)); m_deviceList.append(new DeviceDbusInterface(id,this));
endInsertRows(); endInsertRows();
} }
Q_EMIT dataChanged(index(0),index(deviceIds.count())); Q_EMIT dataChanged(index(0),index(deviceIds.count()));
} }
/* /*
bool DevicesModel::insertRows(int row, int count, const QModelIndex &parent) bool DevicesModel::insertRows(int row, int count, const QModelIndex &parent)
...@@ -128,7 +135,6 @@ QVariant DevicesModel::data(const QModelIndex &index, int role) const ...@@ -128,7 +135,6 @@ QVariant DevicesModel::data(const QModelIndex &index, int role) const
} }
} }
if (!index.isValid() if (!index.isValid()
|| index.row() < 0 || index.row() < 0
|| index.row() >= m_deviceList.count() || index.row() >= m_deviceList.count()
...@@ -139,7 +145,6 @@ QVariant DevicesModel::data(const QModelIndex &index, int role) const ...@@ -139,7 +145,6 @@ QVariant DevicesModel::data(const QModelIndex &index, int role) const
DeviceDbusInterface* device = m_deviceList[index.row()]; DeviceDbusInterface* device = m_deviceList[index.row()];
//FIXME: This function gets called lots of times per second, producing lots of dbus calls //FIXME: This function gets called lots of times per second, producing lots of dbus calls
switch (role) { switch (role) {
case IconModelRole: { case IconModelRole: {
...@@ -158,7 +163,6 @@ QVariant DevicesModel::data(const QModelIndex &index, int role) const ...@@ -158,7 +163,6 @@ QVariant DevicesModel::data(const QModelIndex &index, int role) const
if (device->reachable()) status |= StatusReachable; if (device->reachable()) status |= StatusReachable;
return status; return status;
} }
default: default:
return QVariant(); return QVariant();
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment