From d0d70c3311b3dc3f0e4c11147a4b31e4da0ff56c Mon Sep 17 00:00:00 2001 From: Kimmo Ollila Date: Tue, 14 Jun 2016 14:15:08 +0300 Subject: Fixes to networkSettingsService model handling Change-Id: Ifcea4b0111ad16f4c41692af4db04c044da8359b Reviewed-by: Teemu Holappa --- .../connman/qnetworksettingsmanager_p.cpp | 7 +------ src/networksettings/qnetworksettingsservicemodel.cpp | 17 +++++++++++++++-- src/networksettings/qnetworksettingsservicemodel.h | 1 + 3 files changed, 17 insertions(+), 8 deletions(-) (limited to 'src/networksettings') diff --git a/src/networksettings/connman/qnetworksettingsmanager_p.cpp b/src/networksettings/connman/qnetworksettingsmanager_p.cpp index 125d242..875be9b 100644 --- a/src/networksettings/connman/qnetworksettingsmanager_p.cpp +++ b/src/networksettings/connman/qnetworksettingsmanager_p.cpp @@ -141,12 +141,7 @@ void QNetworkSettingsManagerPrivate::getTechnologiesFinished(QDBusPendingCallWat void QNetworkSettingsManagerPrivate::onServicesChanged(ConnmanMapStructList changed, const QList &removed) { foreach (QDBusObjectPath path, removed) { - QList serviceList = m_serviceModel->getModel(); - QMutableListIterator i(serviceList); - while (i.hasNext()) { - if (i.next()->id() == path.path()) - i.remove(); - } + m_serviceModel->removeService(path.path()); } QStringList newServices; diff --git a/src/networksettings/qnetworksettingsservicemodel.cpp b/src/networksettings/qnetworksettingsservicemodel.cpp index 4b8d87c..868cfa3 100644 --- a/src/networksettings/qnetworksettingsservicemodel.cpp +++ b/src/networksettings/qnetworksettingsservicemodel.cpp @@ -79,9 +79,9 @@ void QNetworkSettingsServiceModel::append(QNetworkSettingsService* item) { item->setParent(this); - beginInsertRows(QModelIndex(), rowCount(), rowCount()); + beginResetModel(); m_items.append(item); - endInsertRows(); + endResetModel(); } void QNetworkSettingsServiceModel::insert(int row, QNetworkSettingsService* item) @@ -100,6 +100,19 @@ void QNetworkSettingsServiceModel::remove(int row) endRemoveRows(); } +bool QNetworkSettingsServiceModel::removeService(const QString &id) +{ + bool ret = false; + for (int i=0; i < m_items.count(); i++) { + if (m_items.at(i)->id() == id) { + remove(i); + ret = true; + break; + } + } + return ret; +} + void QNetworkSettingsServiceModel::updated(int row) { dataChanged(createIndex(row, 0), createIndex(row, 0)); diff --git a/src/networksettings/qnetworksettingsservicemodel.h b/src/networksettings/qnetworksettingsservicemodel.h index 811c127..0cf1601 100644 --- a/src/networksettings/qnetworksettingsservicemodel.h +++ b/src/networksettings/qnetworksettingsservicemodel.h @@ -47,6 +47,7 @@ public: void append(QNetworkSettingsService* networkService); void insert(int row, QNetworkSettingsService* networkInterface); void remove(int row); + bool removeService(const QString &id); void updated(int row); QList getModel(); -- cgit v1.2.3