From d3632244d611435f48f5aeb653f9031ace9a3b20 Mon Sep 17 00:00:00 2001 From: Raquel Medina Date: Wed, 5 Jun 2019 12:37:33 +0200 Subject: network: add network model abstraction - AbstractNetworkModel : abstract class which provides common functionality and data to all network models. -ConnectionProfile : super class which aglomerates connection property information, independently of the technology type (e.g. wired or wifi). A network model contains a list of available connection profiles pertinent to the model. Bug-AGL: SPEC-2293 Signed-off-by: Raquel Medina Change-Id: Ic7b9d59802d13067e057948d1fb109852f35c2fd --- network/abstractnetworkmodel.cpp | 56 +++++++++++++++++++++++++++++++++++++++ network/abstractnetworkmodel.h | 32 ++++++++++++++++++++++ network/connectionprofile.cpp | 57 ++++++++++++++++++++++++++++++++++++++++ network/connectionprofile.h | 34 ++++++++++++++++++++++++ 4 files changed, 179 insertions(+) create mode 100644 network/abstractnetworkmodel.cpp create mode 100644 network/abstractnetworkmodel.h create mode 100644 network/connectionprofile.cpp create mode 100644 network/connectionprofile.h diff --git a/network/abstractnetworkmodel.cpp b/network/abstractnetworkmodel.cpp new file mode 100644 index 0000000..6eada6a --- /dev/null +++ b/network/abstractnetworkmodel.cpp @@ -0,0 +1,56 @@ +#include "abstractnetworkmodel.h" +#include "connectionprofile.h" +#include + + +AbstractNetworkModel::AbstractNetworkModel(QObject *parent) + : QAbstractListModel(parent) +{ +} + +void AbstractNetworkModel::addNetwork(ConnectionProfile *network) +{ + beginInsertRows(QModelIndex(), rowCount(), rowCount()); + m_networks << network; + endInsertRows(); +} + +void AbstractNetworkModel::removeNetwork(ConnectionProfile *network) +{ + int row = m_networks.indexOf(network); + beginRemoveRows(QModelIndex(), row, row); + m_networks.removeAt(row); + endRemoveRows(); + delete network; +} + +void AbstractNetworkModel::removeAllNetworks() +{ + beginRemoveRows(QModelIndex(), 0, m_networks.count() - 1); + qDeleteAll(m_networks.begin(), m_networks.end()); + m_networks.clear(); + endRemoveRows(); +} + +ConnectionProfile *AbstractNetworkModel::getNetwork(QString service) +{ + for (auto network : m_networks) { + if (network->service() == service) + return network; + } + + return nullptr; +} + +int AbstractNetworkModel::rowCount(const QModelIndex &parent) const +{ + Q_UNUSED(parent); + return m_networks.count(); +} + +QModelIndex AbstractNetworkModel::indexOf(ConnectionProfile *network) +{ + int row = m_networks.indexOf(network); + + return index(row); +} diff --git a/network/abstractnetworkmodel.h b/network/abstractnetworkmodel.h new file mode 100644 index 0000000..1b0db43 --- /dev/null +++ b/network/abstractnetworkmodel.h @@ -0,0 +1,32 @@ +#ifndef ABSTRACT_NETWORK_MODEL_H +#define ABSTRACT_NETWORK_MODEL_H + +#include +#include +#include +#include + +#include "connectionprofile.h" + +class AbstractNetworkModel : public QAbstractListModel +{ + Q_OBJECT + + public: + AbstractNetworkModel(QObject *parent = Q_NULLPTR); + virtual QString getType() const = 0; + + void addNetwork(ConnectionProfile *network); + void removeNetwork(ConnectionProfile *network); + void removeAllNetworks(); + ConnectionProfile *getNetwork(QString service); + int rowCount(const QModelIndex &parent = QModelIndex()) const; + + virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const = 0; + virtual void updateProperties(QString service, QJsonObject properties) =0; + + protected: + QList m_networks; + QModelIndex indexOf(ConnectionProfile *network); +}; +#endif // ABSTRACT_NETWORK_MODEL_H diff --git a/network/connectionprofile.cpp b/network/connectionprofile.cpp new file mode 100644 index 0000000..8e30e47 --- /dev/null +++ b/network/connectionprofile.cpp @@ -0,0 +1,57 @@ +#include "connectionprofile.h" + +ConnectionProfile::ConnectionProfile(const QString &address, + const QString &security, + const QString &service, + const QString &state, + const QString &ssid, + const int &strength) + : m_address(address), m_security(security), m_service(service), + m_state(state), m_ssid(ssid), m_strength(strength) +{ +} + +QString ConnectionProfile::address() const +{ + return m_address; +} + +QString ConnectionProfile::security() const +{ + return m_security; +} + +QString ConnectionProfile::service() const +{ + return m_service; +} + +QString ConnectionProfile::state() const +{ + return m_state; +} + +QString ConnectionProfile::ssid() const +{ + return m_ssid; +} + +int ConnectionProfile::strength() const +{ + return m_strength; +} + +void ConnectionProfile::setAddress(const QString address) +{ + m_address = address; +} + +void ConnectionProfile::setState(const QString state) +{ + m_state = state; +} + +void ConnectionProfile::setStrength(const int strength) +{ + m_strength = strength; +} diff --git a/network/connectionprofile.h b/network/connectionprofile.h new file mode 100644 index 0000000..1f5bafa --- /dev/null +++ b/network/connectionprofile.h @@ -0,0 +1,34 @@ +#ifndef CONNECTION_PROFILE_H +#define CONNECTION_PROFILE_H + +#include + +class ConnectionProfile +{ + public: + ConnectionProfile(const QString &address, + const QString &security, + const QString &service, + const QString &ssid, + const QString &state, + const int &strength); + QString address() const; + QString service() const; + QString ssid() const; + QString security() const; + QString state() const; + int strength() const; + void setAddress(const QString address); + void setState(const QString state); + void setStrength(const int strength); + + private: + QString m_address; + QString m_security; + QString m_service; + QString m_state; + QString m_ssid; + int m_strength; +}; + +#endif // CONNECTION_PROFILE_H -- cgit 1.2.3-korg