summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.qmake.conf2
-rw-r--r--src/imports/networksettings/plugin.cpp2
-rw-r--r--src/networksettings/qnetworksettingsinterfacemodel.cpp42
-rw-r--r--src/networksettings/qnetworksettingsinterfacemodel.h8
4 files changed, 52 insertions, 2 deletions
diff --git a/.qmake.conf b/.qmake.conf
index d532748..243940d 100644
--- a/.qmake.conf
+++ b/.qmake.conf
@@ -1,3 +1,3 @@
load(qt_build_config)
-MODULE_VERSION=5.11.2
+MODULE_VERSION=5.12.0
CMAKE_MODULE_TESTS=-
diff --git a/src/imports/networksettings/plugin.cpp b/src/imports/networksettings/plugin.cpp
index ee49594..6900550 100644
--- a/src/imports/networksettings/plugin.cpp
+++ b/src/imports/networksettings/plugin.cpp
@@ -47,7 +47,7 @@
\brief Provides singleton QML types for controlling network settings.
Provides singleton QML types for controlling network settings in an
- embedded device.QAbstractItemModel
+ embedded device.
Import the module as follows:
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
diff --git a/src/networksettings/qnetworksettingsinterfacemodel.h b/src/networksettings/qnetworksettingsinterfacemodel.h
index 4ecebc7..82acc91 100644
--- a/src/networksettings/qnetworksettingsinterfacemodel.h
+++ b/src/networksettings/qnetworksettingsinterfacemodel.h
@@ -59,6 +59,14 @@ public:
Powered
};
+ void updated(int row);
+private Q_SLOTS:
+ void connectionStatusChanged();
+ void poweredChanged();
+
+private:
+ void connectStateChanges(QNetworkSettingsInterface* item);
+
private:
QList<QNetworkSettingsInterface*> m_items;
QHash<int, QByteArray> m_roleNames;