parent
e0bd570aff
commit
a1a29d136b
@ -1,144 +0,0 @@
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (C) 2017 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
||||
*
|
||||
* $BEGIN_LICENSE:LGPLv3+$
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* $END_LICENSE$
|
||||
***************************************************************************/
|
||||
|
||||
#include "networkmodel.h"
|
||||
#include "networkmodelitem.h"
|
||||
#include "technologyproxymodel.h"
|
||||
|
||||
static NetworkManager::ConnectionSettings::ConnectionType convertType(TechnologyProxyModel::Type type)
|
||||
{
|
||||
switch (type) {
|
||||
case TechnologyProxyModel::UnknownType:
|
||||
return NetworkManager::ConnectionSettings::ConnectionType::Unknown;
|
||||
case TechnologyProxyModel::AdslType:
|
||||
return NetworkManager::ConnectionSettings::ConnectionType::Adsl;
|
||||
case TechnologyProxyModel::BluetoothType:
|
||||
return NetworkManager::ConnectionSettings::ConnectionType::Bluetooth;
|
||||
case TechnologyProxyModel::CdmaType:
|
||||
return NetworkManager::ConnectionSettings::ConnectionType::Cdma;
|
||||
case TechnologyProxyModel::GsmType:
|
||||
return NetworkManager::ConnectionSettings::ConnectionType::Gsm;
|
||||
case TechnologyProxyModel::OLPCMeshType:
|
||||
return NetworkManager::ConnectionSettings::ConnectionType::OLPCMesh;
|
||||
case TechnologyProxyModel::PppoeType:
|
||||
return NetworkManager::ConnectionSettings::ConnectionType::Pppoe;
|
||||
case TechnologyProxyModel::VpnType:
|
||||
return NetworkManager::ConnectionSettings::ConnectionType::Vpn;
|
||||
case TechnologyProxyModel::WimaxType:
|
||||
return NetworkManager::ConnectionSettings::ConnectionType::Wimax;
|
||||
case TechnologyProxyModel::WiredType:
|
||||
return NetworkManager::ConnectionSettings::ConnectionType::Wired;
|
||||
case TechnologyProxyModel::WirelessType:
|
||||
return NetworkManager::ConnectionSettings::ConnectionType::Wireless;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return NetworkManager::ConnectionSettings::ConnectionType::Unknown;
|
||||
}
|
||||
|
||||
TechnologyProxyModel::TechnologyProxyModel(QObject *parent)
|
||||
: QSortFilterProxyModel(parent)
|
||||
{
|
||||
setDynamicSortFilter(true);
|
||||
setSortCaseSensitivity(Qt::CaseInsensitive);
|
||||
setSortLocaleAware(true);
|
||||
sort(0, Qt::DescendingOrder);
|
||||
}
|
||||
|
||||
TechnologyProxyModel::Type TechnologyProxyModel::type() const
|
||||
{
|
||||
return m_type;
|
||||
}
|
||||
|
||||
void TechnologyProxyModel::setType(Type type)
|
||||
{
|
||||
if (m_type == type)
|
||||
return;
|
||||
m_type = type;
|
||||
Q_EMIT typeChanged();
|
||||
|
||||
if (type == UnknownType)
|
||||
setFilterRole(0);
|
||||
else
|
||||
setFilterRole(NetworkModel::TypeRole);
|
||||
}
|
||||
|
||||
bool TechnologyProxyModel::showInactiveConnections() const
|
||||
{
|
||||
return m_showInactiveConnections;
|
||||
}
|
||||
|
||||
void TechnologyProxyModel::setShowInactiveConnections(bool value)
|
||||
{
|
||||
if (m_showInactiveConnections == value)
|
||||
return;
|
||||
|
||||
m_showInactiveConnections = value;
|
||||
Q_EMIT showInactiveConnectionsChanged();
|
||||
}
|
||||
|
||||
bool TechnologyProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
|
||||
{
|
||||
const QModelIndex index = sourceModel()->index(source_row, 0, source_parent);
|
||||
|
||||
// Filter out slaves and duplicates
|
||||
const bool isSlave = sourceModel()->data(index, NetworkModel::SlaveRole).toBool();
|
||||
const bool isDuplicate = sourceModel()->data(index, NetworkModel::DuplicateRole).toBool();
|
||||
if (isSlave || isDuplicate)
|
||||
return false;
|
||||
|
||||
// Connection and item type
|
||||
const NetworkManager::ConnectionSettings::ConnectionType type =
|
||||
static_cast<NetworkManager::ConnectionSettings::ConnectionType>(sourceModel()->data(index, NetworkModel::TypeRole).toUInt());
|
||||
const NetworkModelItem::ItemType itemType =
|
||||
static_cast<NetworkModelItem::ItemType>(sourceModel()->data(index, NetworkModel::ItemTypeRole).toUInt());
|
||||
|
||||
// Filter-out certain connection types we are not interested in
|
||||
if (m_type != UnknownType) {
|
||||
if (type != convertType(m_type))
|
||||
return false;
|
||||
}
|
||||
|
||||
// Filter-out access points
|
||||
if (itemType != NetworkModelItem::AvailableConnection &&
|
||||
itemType != NetworkModelItem::AvailableAccessPoint)
|
||||
return false;
|
||||
|
||||
// Filter by state
|
||||
const NetworkManager::ActiveConnection::State state =
|
||||
static_cast<NetworkManager::ActiveConnection::State>(sourceModel()->data(index, NetworkModel::ConnectionStateRole).toUInt());
|
||||
if (!m_showInactiveConnections && state == NetworkManager::ActiveConnection::Deactivated)
|
||||
return false;
|
||||
|
||||
// Filter on connection name
|
||||
const QString pattern = filterRegExp().pattern();
|
||||
if (!pattern.isEmpty()) {
|
||||
QString data = sourceModel()->data(index, Qt::DisplayRole).toString();
|
||||
if (data.isEmpty())
|
||||
data = sourceModel()->data(index, NetworkModel::NameRole).toString();
|
||||
return data.contains(pattern, Qt::CaseInsensitive);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (C) 2017 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
||||
*
|
||||
* $BEGIN_LICENSE:LGPLv3+$
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* $END_LICENSE$
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef TECHNOLOGYPROXYMODEL_H
|
||||
#define TECHNOLOGYPROXYMODEL_H
|
||||
|
||||
#include <networkmanager_export.h>
|
||||
|
||||
#include <QtCore/QSortFilterProxyModel>
|
||||
|
||||
#include <NetworkManagerQt/ConnectionSettings>
|
||||
|
||||
class NETWORKMANAGER_EXPORT TechnologyProxyModel : public QSortFilterProxyModel
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(Type type READ type WRITE setType NOTIFY typeChanged)
|
||||
Q_PROPERTY(bool showInactiveConnections READ showInactiveConnections WRITE setShowInactiveConnections NOTIFY showInactiveConnectionsChanged)
|
||||
Q_PROPERTY(QAbstractItemModel *sourceModel READ sourceModel WRITE setSourceModel)
|
||||
|
||||
public:
|
||||
enum Type {
|
||||
UnknownType = 0,
|
||||
AdslType,
|
||||
BluetoothType,
|
||||
CdmaType,
|
||||
GsmType,
|
||||
OLPCMeshType,
|
||||
PppoeType,
|
||||
VpnType,
|
||||
WimaxType,
|
||||
WiredType,
|
||||
WirelessType
|
||||
};
|
||||
Q_ENUM(Type)
|
||||
|
||||
TechnologyProxyModel(QObject *parent = nullptr);
|
||||
|
||||
Type type() const;
|
||||
void setType(Type type);
|
||||
|
||||
bool showInactiveConnections() const;
|
||||
void setShowInactiveConnections(bool value);
|
||||
|
||||
Q_SIGNALS:
|
||||
void typeChanged();
|
||||
void showInactiveConnectionsChanged();
|
||||
|
||||
protected:
|
||||
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
|
||||
|
||||
private:
|
||||
Type m_type = UnknownType;
|
||||
bool m_showInactiveConnections = false;
|
||||
};
|
||||
|
||||
#endif //TECHNOLOGYPROXYMODEL_H
|
Loading…
Reference in New Issue