diff --git a/2024/tp4_reseau/main.cpp b/2024/tp4_reseau/main.cpp index f77ee72..d88531f 100644 --- a/2024/tp4_reseau/main.cpp +++ b/2024/tp4_reseau/main.cpp @@ -29,6 +29,14 @@ int main(int argc, char *argv[]) "Don't build NetworkInterface from QML"); engine.rootContext()->setContextProperty("netint", &ni); + QObjectList allInterfaces; + for ( QNetworkInterface iface : QNetworkInterface::allInterfaces() ) { + allInterfaces.push_back(new NetworkInterface{iface}); + } + + + engine.rootContext()->setContextProperty("superliste", QVariant::fromValue(allInterfaces)); + engine.load(url); return app.exec(); diff --git a/2024/tp4_reseau/main.qml b/2024/tp4_reseau/main.qml index 30ee661..cd23284 100644 --- a/2024/tp4_reseau/main.qml +++ b/2024/tp4_reseau/main.qml @@ -10,9 +10,23 @@ Window { NetIf { + id: netif name: netint.name address: netint.address iface: netint } + ListView { + anchors.top: netif.bottom + anchors.bottom: parent.bottom + width: parent.width + + model: superliste + delegate: NetIf { + name: modelData.name + address: modelData.address + iface: modelData + } + } + } diff --git a/2024/tp4_reseau/networkinterface.cpp b/2024/tp4_reseau/networkinterface.cpp index ffd2dff..8696569 100644 --- a/2024/tp4_reseau/networkinterface.cpp +++ b/2024/tp4_reseau/networkinterface.cpp @@ -5,7 +5,23 @@ NetworkInterface::NetworkInterface(int interfaceIndex, QObject *parent) m_qni{QNetworkInterface::interfaceFromIndex(interfaceIndex)} { setName(m_qni.name()); - setAddress(m_qni.addressEntries().first().ip().toString()); + auto adresses = m_qni.addressEntries(); + if ( adresses.size() == 0 ) + setAddress("NO ADRESS"); + else + setAddress(adresses.first().ip().toString()); +} + +NetworkInterface::NetworkInterface(QNetworkInterface iface, QObject *parent) + : QObject{parent}, + m_qni{iface} +{ + setName(m_qni.name()); + auto adresses = m_qni.addressEntries(); + if ( adresses.size() == 0 ) + setAddress("NO ADRESS"); + else + setAddress(adresses.first().ip().toString()); } QString NetworkInterface::name() const diff --git a/2024/tp4_reseau/networkinterface.h b/2024/tp4_reseau/networkinterface.h index 4f56675..3bf4883 100644 --- a/2024/tp4_reseau/networkinterface.h +++ b/2024/tp4_reseau/networkinterface.h @@ -12,6 +12,8 @@ class NetworkInterface : public QObject Q_PROPERTY(QString address READ address WRITE setAddress NOTIFY addressChanged FINAL) public: explicit NetworkInterface(int interfaceIndex, QObject *parent = nullptr); + explicit NetworkInterface(QNetworkInterface iface, QObject *parent = nullptr); + QString name() const; void setName(const QString &newName);