diff options
author | Raquel Medina <raquel.medina@konsulko.com> | 2019-06-05 12:37:33 +0200 |
---|---|---|
committer | raquel medina <raquel.medina@konsulko.com> | 2019-06-10 10:55:23 +0000 |
commit | d3632244d611435f48f5aeb653f9031ace9a3b20 (patch) | |
tree | dff535ea26de1483df29d5e52f91799645562d63 | |
parent | 0b4be8897b1d041db9931f4726d0dbd9d03a0c58 (diff) |
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 <raquel.medina@konsulko.com>
Change-Id: Ic7b9d59802d13067e057948d1fb109852f35c2fd
-rw-r--r-- | network/abstractnetworkmodel.cpp | 56 | ||||
-rw-r--r-- | network/abstractnetworkmodel.h | 32 | ||||
-rw-r--r-- | network/connectionprofile.cpp | 57 | ||||
-rw-r--r-- | network/connectionprofile.h | 34 |
4 files changed, 179 insertions, 0 deletions
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 <QDebug> + + +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 <QAbstractListModel> +#include <QStringList> +#include <QtQml/QQmlContext> +#include <QJsonObject> + +#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<ConnectionProfile *> 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 <QString> + +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 |