From 3e8998a7d712275891905f9e75a8cd150de86877 Mon Sep 17 00:00:00 2001 From: Teemu Holappa Date: Thu, 28 Jan 2016 10:22:43 +0200 Subject: Wifi support to the Network Settings Plugin. All the network management is done now through the Connman backend. Removed separate wifi settings plugin. Change-Id: I7b6b7231f1c44727ce0591e11182d25bc43718ed Reviewed-by: Risto Avila --- .../qnetworksettingsservicemodel.cpp | 164 +++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 src/qtdevicesettings/networksettingsplugin/networksettings/qnetworksettingsservicemodel.cpp (limited to 'src/qtdevicesettings/networksettingsplugin/networksettings/qnetworksettingsservicemodel.cpp') diff --git a/src/qtdevicesettings/networksettingsplugin/networksettings/qnetworksettingsservicemodel.cpp b/src/qtdevicesettings/networksettingsplugin/networksettings/qnetworksettingsservicemodel.cpp new file mode 100644 index 0000000..ff5406d --- /dev/null +++ b/src/qtdevicesettings/networksettingsplugin/networksettings/qnetworksettingsservicemodel.cpp @@ -0,0 +1,164 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Device Utilities module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "qnetworksettingsservicemodel.h" +#include "qnetworksettings.h" + +QNetworkSettingsServiceModel::QNetworkSettingsServiceModel(QObject *parent) + : QAbstractListModel(parent) +{ + m_roleNames.insert(Qt::UserRole, "modelData"); + m_roleNames.insert(Name, "name"); + m_roleNames.insert(SignalStrength, "signalStrength"); + m_roleNames.insert(Connected, "connected"); +} + +QNetworkSettingsServiceModel::~QNetworkSettingsServiceModel() +{ + +} + +QHash QNetworkSettingsServiceModel::roleNames() const +{ + return m_roleNames; +} + + +int QNetworkSettingsServiceModel::rowCount(const QModelIndex & parent) const +{ + Q_UNUSED(parent); + return m_items.count(); +} + +QVariant QNetworkSettingsServiceModel::data(const QModelIndex & index, int role) const +{ + if (!index.isValid()) return QVariant(); + + QNetworkSettingsService *item = m_items[index.row()]; + if (role == Qt::UserRole) { + return QVariant::fromValue(static_cast(item)); + } + else if (role == Name) { + return item->name(); + } + else if (role == SignalStrength) { + return item->wirelessConfig()->signalStrength(); + } + else if (role == Connected) { + return item->state() == QNetworkSettingsState::Online || item->state() == QNetworkSettingsState::Ready; + } + return QVariant(); +} + +void QNetworkSettingsServiceModel::append(QNetworkSettingsService* item) +{ + item->setParent(this); + + beginInsertRows(QModelIndex(), rowCount(), rowCount()); + m_items.append(item); + endInsertRows(); +} + +void QNetworkSettingsServiceModel::insert(int row, QNetworkSettingsService* item) +{ + item->setParent(this); + + beginInsertRows(QModelIndex(), row, row); + m_items.insert(row, item); + endInsertRows(); +} + +QList QNetworkSettingsServiceModel::getModel() +{ + return m_items; +} + +//Filter model + +QNetworkSettingsServiceFilter::QNetworkSettingsServiceFilter(QObject* parent) + :QSortFilterProxyModel(parent) +{ + connect(this, &QNetworkSettingsServiceFilter::typeChanged, this, &QNetworkSettingsServiceFilter::invalidate); +} + +QNetworkSettingsServiceFilter::~QNetworkSettingsServiceFilter() +{ + +} + +QNetworkSettingsType::Types QNetworkSettingsServiceFilter::type() const +{ + return m_type; +} + +void QNetworkSettingsServiceFilter::setType(const QNetworkSettingsType::Types type) +{ + m_type = type; + emit typeChanged(); +} + +bool QNetworkSettingsServiceFilter::filterAcceptsRow( int source_row, const QModelIndex& source_parent ) const +{ + if (this->sourceModel()) + { + QModelIndex index = this->sourceModel()->index( source_row, 0, source_parent ); + if (index.isValid()) + { + if (index.isValid()) + { + QObject * obj = qvariant_cast(index.data(Qt::UserRole)); + QNetworkSettingsService * service = qobject_cast(obj); + if (service->type() == m_type) + return true; + } + } + } + return false; +} + +QVariant QNetworkSettingsServiceFilter::itemFromRow(const int row) const +{ + QModelIndex idx = index(row, 0); + QModelIndex mapped = mapToSource(idx); + if (mapped.isValid()) + { + QVariant serviceItem = mapped.data(Qt::UserRole); + if (serviceItem.isValid()) + { + return serviceItem; + } + } + return QVariant::fromValue(QString("")); +} -- cgit v1.2.3