summaryrefslogtreecommitdiffstats
path: root/network/wifinetworkmodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'network/wifinetworkmodel.cpp')
-rw-r--r--network/wifinetworkmodel.cpp115
1 files changed, 65 insertions, 50 deletions
diff --git a/network/wifinetworkmodel.cpp b/network/wifinetworkmodel.cpp
index 7c32779..6df4116 100644
--- a/network/wifinetworkmodel.cpp
+++ b/network/wifinetworkmodel.cpp
@@ -10,71 +10,86 @@ WifiNetworkModel::WifiNetworkModel(QObject *parent)
QVariant WifiNetworkModel::data(const QModelIndex &index, int role) const
{
- if (index.row() < 0 || index.row() >= m_networks.count())
- return QVariant();
+ if (index.row() < 0 || index.row() >= m_networks.count())
+ return QVariant();
- ConnectionProfile *network = m_networks[index.row()];
+ ConnectionProfile *network = m_networks[index.row()];
- switch (role) {
+ switch (role) {
case AddressRole:
- return network->address();
+ return network->address();
case SecurityRole:
- return network->security();
+ return network->security();
case ServiceRole:
- return network->service();
+ return network->service();
case SsidRole:
- return network->ssid();
+ return network->ssid();
case StateRole:
- return network->state();
+ return network->state();
case StrengthRole:
- return network->strength();
- }
+ return network->strength();
+ }
- return QVariant();
+ return QVariant();
}
QHash<int, QByteArray> WifiNetworkModel::roleNames() const {
- QHash<int, QByteArray> roles;
- roles[AddressRole] = "address";
- roles[SecurityRole] = "security";
- roles[ServiceRole] = "service";
- roles[SsidRole] = "ssid";
- roles[StateRole] = "sstate";
- roles[StrengthRole] = "strength";
+ QHash<int, QByteArray> roles;
+ roles[AddressRole] = "address";
+ roles[SecurityRole] = "security";
+ roles[ServiceRole] = "service";
+ roles[SsidRole] = "ssid";
+ roles[StateRole] = "sstate";
+ roles[StrengthRole] = "strength";
- return roles;
+ return roles;
}
-void WifiNetworkModel::updateProperties(QString service, QJsonObject properties)
+void WifiNetworkModel::updateProperties(const QString &service, const QVariantMap &properties)
{
- ConnectionProfile *network;
- QVector<int> vroles;
- bool sbcast = false;
+ ConnectionProfile *network;
+ QVector<int> vroles;
+ bool sbcast = false;
- if ((network = getNetwork(service))) {
- if (properties.contains("ipv4")) {
- QString address = properties.value("ipv4").toObject().value("address").toString();
- network->setAddress(address);
- vroles.push_back(AddressRole);
- }
- if (properties.contains("state")) {
- network->setState(properties.value("state").toString());
- vroles.push_back(StateRole);
- if ((network->state() == "ready") ||
- (network->state() == "online"))
- sbcast = true;
- }
- if (properties.contains("strength")) {
- network->setStrength(properties.value("strength").toInt());
- vroles.push_back(StrengthRole);
- if ((network->state() == "ready") ||
- (network->state() == "online"))
- sbcast = true;
- }
- if (!vroles.isEmpty()) {
- emit dataChanged(indexOf(network), indexOf(network), vroles);
- if (sbcast)
- emit strengthChanged(network->strength());
- }
- }
+ network = getNetwork(service);
+ if (!network)
+ return;
+
+ QString key = "IPv4";
+ if (properties.contains(key)) {
+ QVariantMap ip4_map = properties.value(key).toMap();
+
+ key = "Address";
+ if (ip4_map.contains(key)) {
+ QString address = ip4_map.value(key).toString();
+ network->setAddress(address);
+ vroles.push_back(AddressRole);
+ }
+ }
+
+ key = "State";
+ if (properties.contains(key)) {
+ QString state = properties.value(key).toString();
+ network->setState(state);
+ vroles.push_back(StateRole);
+ if ((network->state() == "ready") ||
+ (network->state() == "online"))
+ sbcast = true;
+ }
+
+ key = "Strength";
+ if (properties.contains(key)) {
+ int strength = properties.value(key).toInt();
+ network->setStrength(strength);
+ vroles.push_back(StrengthRole);
+ if ((network->state() == "ready") ||
+ (network->state() == "online"))
+ sbcast = true;
+ }
+
+ if (!vroles.isEmpty()) {
+ emit dataChanged(indexOf(network), indexOf(network), vroles);
+ if (sbcast)
+ emit strengthChanged(network->strength());
+ }
}