Fixed KCM device list not being refreshed
When a the device visibilita changes
This commit is contained in:
parent
f28088c915
commit
05983267e3
2 changed files with 17 additions and 14 deletions
|
@ -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*
|
||||||
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()
|
||||||
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)
|
||||||
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)
|
||||||
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()
|
||||||
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
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
|
||||||
if (device->reachable()) status |= StatusReachable;
|
if (device->reachable()) status |= StatusReachable;
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue