summaryrefslogtreecommitdiffstats
path: root/src/networksettings/connman/qnetworksettingsmanager_p.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/networksettings/connman/qnetworksettingsmanager_p.cpp')
-rw-r--r--src/networksettings/connman/qnetworksettingsmanager_p.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/networksettings/connman/qnetworksettingsmanager_p.cpp b/src/networksettings/connman/qnetworksettingsmanager_p.cpp
index bd656c6..2f7965d 100644
--- a/src/networksettings/connman/qnetworksettingsmanager_p.cpp
+++ b/src/networksettings/connman/qnetworksettingsmanager_p.cpp
@@ -94,6 +94,8 @@ bool QNetworkSettingsManagerPrivate::initialize()
this, &QNetworkSettingsManagerPrivate::getServicesFinished);
connect(m_manager, &NetConnmanManagerInterface::ServicesChanged, this, &QNetworkSettingsManagerPrivate::onServicesChanged);
+ connect(m_manager, &NetConnmanManagerInterface::TechnologyAdded, this, &QNetworkSettingsManagerPrivate::onTechnologyAdded);
+ connect(m_manager, &NetConnmanManagerInterface::TechnologyRemoved, this, &QNetworkSettingsManagerPrivate::onTechnologyRemoved);
m_manager->RegisterAgent(QDBusObjectPath(AgentPath));
m_initialized = true;
@@ -154,6 +156,40 @@ void QNetworkSettingsManagerPrivate::onConnmanServiceRegistered(const QString &s
}
}
+void QNetworkSettingsManagerPrivate::onTechnologyAdded(const QDBusObjectPath &technology, const QVariantMap &properties)
+{
+ Q_Q(QNetworkSettingsManager);
+
+ foreach (QNetworkSettingsInterface* item, m_interfaceModel.getModel()) {
+ ConnmanSettingsInterface* tech = qobject_cast<ConnmanSettingsInterface*>(item);
+ if (tech->path() != technology.path()) {
+ ConnmanSettingsInterface *interface = new ConnmanSettingsInterface(technology.path(), properties, this);
+ interface->scanServices();
+
+ if (interface->type() == QNetworkSettingsType::Wired) {
+ m_interfaceModel.insert(0, interface);
+ }
+ else if (interface->type() == QNetworkSettingsType::Wifi) {
+ m_interfaceModel.append(interface);
+ }
+ emit q->interfacesChanged();
+ }
+ }
+}
+
+void QNetworkSettingsManagerPrivate::onTechnologyRemoved(const QDBusObjectPath &technology)
+{
+ Q_Q(QNetworkSettingsManager);
+
+ foreach (QNetworkSettingsInterface* item, m_interfaceModel.getModel()) {
+ ConnmanSettingsInterface* tech = qobject_cast<ConnmanSettingsInterface*>(item);
+ if (tech->path() == technology.path()) {
+ m_interfaceModel.removeInterface(technology.path());
+ emit q->interfacesChanged();
+ }
+ }
+}
+
void QNetworkSettingsManagerPrivate::getServicesFinished(QDBusPendingCallWatcher *watcher)
{
Q_Q(QNetworkSettingsManager);