diff options
-rw-r--r-- | .qmake.conf | 2 | ||||
-rw-r--r-- | src/imports/networksettings/plugin.cpp | 2 | ||||
-rw-r--r-- | src/networksettings/qnetworksettingsinterfacemodel.cpp | 42 | ||||
-rw-r--r-- | src/networksettings/qnetworksettingsinterfacemodel.h | 8 |
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; |