Removed some assertions that could not be true if using the model filter

Also fixed ugly hack where the KCM updated the model
This commit is contained in:
Albert Vaca 2015-06-21 20:20:40 -07:00
parent c8e0c474ef
commit 9fa8538bf1
3 changed files with 15 additions and 27 deletions

View file

@ -49,7 +49,7 @@ DevicesModel::DevicesModel(QObject *parent)
connect(m_dbusInterface, SIGNAL(deviceAdded(QString)), connect(m_dbusInterface, SIGNAL(deviceAdded(QString)),
this, SLOT(deviceAdded(QString))); this, SLOT(deviceAdded(QString)));
connect(m_dbusInterface, SIGNAL(deviceVisibilityChanged(QString,bool)), connect(m_dbusInterface, SIGNAL(deviceVisibilityChanged(QString,bool)),
this, SLOT(deviceStatusChanged(QString))); this, SLOT(deviceUpdated(QString)));
connect(m_dbusInterface, SIGNAL(deviceRemoved(QString)), connect(m_dbusInterface, SIGNAL(deviceRemoved(QString)),
this, SLOT(deviceRemoved(QString))); this, SLOT(deviceRemoved(QString)));
@ -93,26 +93,23 @@ void DevicesModel::deviceAdded(const QString& id)
void DevicesModel::deviceRemoved(const QString& id) void DevicesModel::deviceRemoved(const QString& id)
{ {
if (!m_deviceIndexById.contains(id)) { QMap<QString, int>::iterator it = m_deviceIndexById.find(id);
Q_ASSERT(false); //This should only be emited for existing devices if (it != m_deviceIndexById.end()) {
return; int row = *it;
m_deviceIndexById.erase(it);
beginRemoveRows(QModelIndex(), row, row);
delete m_deviceList.takeAt(row);
endRemoveRows();
} }
const int row = m_deviceIndexById.take(id);
beginRemoveRows(QModelIndex(), row, row);
delete m_deviceList.takeAt(row);
endRemoveRows();
} }
void DevicesModel::deviceStatusChanged(const QString& id) void DevicesModel::deviceUpdated(const QString& id)
{ {
if (!m_deviceIndexById.contains(id)) { QMap<QString, int>::iterator it = m_deviceIndexById.find(id);
Q_ASSERT(false); //This should only be emited for existing devices if (it != m_deviceIndexById.end()) {
return; const QModelIndex idx = index(it.value());
Q_EMIT dataChanged(idx, idx);
} }
int row = m_deviceIndexById[id];
const QModelIndex idx = index(row);
Q_EMIT dataChanged(idx, idx);
} }
int DevicesModel::displayFilter() const int DevicesModel::displayFilter() const
@ -178,13 +175,8 @@ void DevicesModel::appendDevice(DeviceDbusInterface* dev)
void DevicesModel::nameChanged(const QString& newName) void DevicesModel::nameChanged(const QString& newName)
{ {
Q_UNUSED(newName); Q_UNUSED(newName);
DeviceDbusInterface* device = static_cast<DeviceDbusInterface*>(sender()); DeviceDbusInterface* device = static_cast<DeviceDbusInterface*>(sender());
deviceUpdated(device->id());
int row = m_deviceIndexById[device->id()];
Q_ASSERT(row >= 0);
const QModelIndex idx = index(row);
Q_EMIT dataChanged(idx, idx);
} }
void DevicesModel::clearDevices() void DevicesModel::clearDevices()

View file

@ -69,12 +69,10 @@ public:
Q_SCRIPTABLE DeviceDbusInterface* getDevice(int row) const; Q_SCRIPTABLE DeviceDbusInterface* getDevice(int row) const;
virtual QHash<int, QByteArray> roleNames() const; virtual QHash<int, QByteArray> roleNames() const;
public Q_SLOTS:
void deviceStatusChanged(const QString& id);
private Q_SLOTS: private Q_SLOTS:
void deviceAdded(const QString& id); void deviceAdded(const QString& id);
void deviceRemoved(const QString& id); void deviceRemoved(const QString& id);
void deviceUpdated(const QString& id);
void refreshDeviceList(); void refreshDeviceList();
void receivedDeviceList(QDBusPendingCallWatcher* watcher); void receivedDeviceList(QDBusPendingCallWatcher* watcher);
void nameChanged(const QString& newName); void nameChanged(const QString& newName);

View file

@ -259,8 +259,6 @@ void KdeConnectKcm::pairingFailed(const QString& error)
void KdeConnectKcm::pairingChanged(bool paired) void KdeConnectKcm::pairingChanged(bool paired)
{ {
DeviceDbusInterface* senderDevice = (DeviceDbusInterface*) sender(); DeviceDbusInterface* senderDevice = (DeviceDbusInterface*) sender();
devicesModel->deviceStatusChanged(senderDevice->id());
if (senderDevice != currentDevice) return; if (senderDevice != currentDevice) return;
kcmUi->pair_button->setVisible(!paired); kcmUi->pair_button->setVisible(!paired);