summaryrefslogtreecommitdiffstats
path: root/src/networksettings/qnetworksettingsinterfacemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/networksettings/qnetworksettingsinterfacemodel.cpp')
-rw-r--r--src/networksettings/qnetworksettingsinterfacemodel.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/networksettings/qnetworksettingsinterfacemodel.cpp b/src/networksettings/qnetworksettingsinterfacemodel.cpp
index ff234ac..b099c6d 100644
--- a/src/networksettings/qnetworksettingsinterfacemodel.cpp
+++ b/src/networksettings/qnetworksettingsinterfacemodel.cpp
@@ -123,6 +123,7 @@ QVariant QNetworkSettingsInterfaceModel::data(const QModelIndex & index, int rol
void QNetworkSettingsInterfaceModel::append(QNetworkSettingsInterface* item)
{
item->setParent(this);
+ connectStateChanges(item);
beginInsertRows(QModelIndex(), rowCount(), rowCount());
m_items.append(item);
@@ -135,12 +136,19 @@ void QNetworkSettingsInterfaceModel::append(QNetworkSettingsInterface* item)
void QNetworkSettingsInterfaceModel::insert(int row, QNetworkSettingsInterface* item)
{
item->setParent(this);
+ connectStateChanges(item);
beginInsertRows(QModelIndex(), row, row);
m_items.insert(row, item);
endInsertRows();
}
+void QNetworkSettingsInterfaceModel::connectStateChanges(QNetworkSettingsInterface* item)
+{
+ connect(item, &QNetworkSettingsInterface::stateChanged, this, &QNetworkSettingsInterfaceModel::connectionStatusChanged);
+ connect(item, &QNetworkSettingsInterface::poweredChanged, this, &QNetworkSettingsInterfaceModel::poweredChanged);
+}
+
/*!
Removes the row \a row from the model.
*/
@@ -151,6 +159,11 @@ void QNetworkSettingsInterfaceModel::remove(int row)
endRemoveRows();
}
+void QNetworkSettingsInterfaceModel::updated(int row)
+{
+ dataChanged(createIndex(row, 0), createIndex(row, 0));
+}
+
/*!
Returns the network interface model.
*/
@@ -159,4 +172,33 @@ QList<QNetworkSettingsInterface*> QNetworkSettingsInterfaceModel::getModel()
return m_items;
}
+void QNetworkSettingsInterfaceModel::connectionStatusChanged()
+{
+ QNetworkSettingsInterface *s = qobject_cast<QNetworkSettingsInterface*>(sender());
+
+ int row = 0;
+ foreach (QNetworkSettingsInterface* item, m_items) {
+ if (item == s) {
+ updated(row);
+ break;
+ }
+ row++;
+ }
+
+}
+
+void QNetworkSettingsInterfaceModel::poweredChanged()
+{
+ QNetworkSettingsInterface *s = qobject_cast<QNetworkSettingsInterface*>(sender());
+ int row = 0;
+ foreach (QNetworkSettingsInterface* item, m_items) {
+ if (item == s) {
+ updated(row);
+ break;
+ }
+ row++;
+ }
+}
+
+
QT_END_NAMESPACE