summaryrefslogtreecommitdiffstats
path: root/src/networksettings
diff options
context:
space:
mode:
Diffstat (limited to 'src/networksettings')
-rw-r--r--src/networksettings/connman/qnetworksettingsmanager_p.cpp7
-rw-r--r--src/networksettings/qnetworksettingsservicemodel.cpp17
-rw-r--r--src/networksettings/qnetworksettingsservicemodel.h1
3 files changed, 17 insertions, 8 deletions
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<QDBusObjectPath> &removed)
{
foreach (QDBusObjectPath path, removed) {
- QList<QNetworkSettingsService*> serviceList = m_serviceModel->getModel();
- QMutableListIterator<QNetworkSettingsService*> 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<QNetworkSettingsService*> getModel();