summaryrefslogtreecommitdiffstats
path: root/examples/network/bearermonitor/bearermonitor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/network/bearermonitor/bearermonitor.cpp')
-rw-r--r--examples/network/bearermonitor/bearermonitor.cpp424
1 files changed, 0 insertions, 424 deletions
diff --git a/examples/network/bearermonitor/bearermonitor.cpp b/examples/network/bearermonitor/bearermonitor.cpp
deleted file mode 100644
index 1a54f5ec8a..0000000000
--- a/examples/network/bearermonitor/bearermonitor.cpp
+++ /dev/null
@@ -1,424 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "bearermonitor.h"
-#include "sessionwidget.h"
-
-#include <QtCore/QDebug>
-
-#ifdef Q_OS_WIN
-#include <winsock2.h>
-#undef interface
-
-#ifndef NS_NLA
-#define NS_NLA 15
-#endif
-#endif
-
-BearerMonitor::BearerMonitor(QWidget *parent)
-: QWidget(parent)
-{
- setupUi(this);
- delete tabWidget->currentWidget();
- sessionGroup->hide();
- updateConfigurations();
- onlineStateChanged(!manager.allConfigurations(QNetworkConfiguration::Active).isEmpty());
- QNetworkConfiguration defaultConfiguration = manager.defaultConfiguration();
- for (int i = 0; i < treeWidget->topLevelItemCount(); ++i) {
- QTreeWidgetItem *item = treeWidget->topLevelItem(i);
-
- if (item->data(0, Qt::UserRole).toString() == defaultConfiguration.identifier()) {
- treeWidget->setCurrentItem(item);
- showConfigurationFor(item);
- break;
- }
- }
- connect(&manager, SIGNAL(onlineStateChanged(bool)), this ,SLOT(onlineStateChanged(bool)));
- connect(&manager, SIGNAL(configurationAdded(const QNetworkConfiguration&)),
- this, SLOT(configurationAdded(const QNetworkConfiguration&)));
- connect(&manager, SIGNAL(configurationRemoved(const QNetworkConfiguration&)),
- this, SLOT(configurationRemoved(const QNetworkConfiguration&)));
- connect(&manager, SIGNAL(configurationChanged(const QNetworkConfiguration&)),
- this, SLOT(configurationChanged(const QNetworkConfiguration)));
- connect(&manager, SIGNAL(updateCompleted()), this, SLOT(updateConfigurations()));
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT)
- connect(registerButton, SIGNAL(clicked()), this, SLOT(registerNetwork()));
- connect(unregisterButton, SIGNAL(clicked()), this, SLOT(unregisterNetwork()));
-#else // Q_OS_WIN && !Q_OS_WINRT
- nlaGroup->hide();
-#endif
-
- connect(treeWidget, SIGNAL(itemActivated(QTreeWidgetItem*,int)),
- this, SLOT(createSessionFor(QTreeWidgetItem*)));
-
- connect(treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),
- this, SLOT(showConfigurationFor(QTreeWidgetItem*)));
-
- connect(newSessionButton, SIGNAL(clicked()),
- this, SLOT(createNewSession()));
- connect(deleteSessionButton, SIGNAL(clicked()),
- this, SLOT(deleteSession()));
- connect(scanButton, SIGNAL(clicked()),
- this, SLOT(performScan()));
-
- // Just in case update all configurations so that all
- // configurations are up to date.
- manager.updateConfigurations();
-}
-
-BearerMonitor::~BearerMonitor()
-{
-}
-
-static void updateItem(QTreeWidgetItem *item, const QNetworkConfiguration &config)
-{
- item->setText(0, config.name());
- item->setData(0, Qt::UserRole, config.identifier());
-
- QFont font = item->font(1);
- font.setBold((config.state() & QNetworkConfiguration::Active) == QNetworkConfiguration::Active);
- item->setFont(0, font);
-}
-
-void BearerMonitor::configurationAdded(const QNetworkConfiguration &config, QTreeWidgetItem *parent)
-{
- if (!config.isValid())
- return;
-
- QTreeWidgetItem *item = new QTreeWidgetItem;
- updateItem(item, config);
-
- if (parent)
- parent->addChild(item);
- else
- treeWidget->addTopLevelItem(item);
-
- if (config.type() == QNetworkConfiguration::ServiceNetwork) {
- const QList<QNetworkConfiguration> children = config.children();
- for (const QNetworkConfiguration &child : children)
- configurationAdded(child, item);
- }
-}
-
-void BearerMonitor::configurationRemoved(const QNetworkConfiguration &config)
-{
- for (int i = 0; i < treeWidget->topLevelItemCount(); ++i) {
- QTreeWidgetItem *item = treeWidget->topLevelItem(i);
-
- if (item->data(0, Qt::UserRole).toString() == config.identifier()) {
- delete item;
- break;
- }
- }
-}
-
-void BearerMonitor::configurationChanged(const QNetworkConfiguration &config)
-{
- for (int i = 0; i < treeWidget->topLevelItemCount(); ++i) {
- QTreeWidgetItem *item = treeWidget->topLevelItem(i);
-
- if (item->data(0, Qt::UserRole).toString() == config.identifier()) {
- updateItem(item, config);
-
- if (config.type() == QNetworkConfiguration::ServiceNetwork)
- updateSnapConfiguration(item, config);
-
- if (item == treeWidget->currentItem())
- showConfigurationFor(item);
-
- break;
- }
- }
-}
-
-void BearerMonitor::updateSnapConfiguration(QTreeWidgetItem *parent, const QNetworkConfiguration &snap)
-{
- QMap<QString, QTreeWidgetItem *> itemMap;
- const QList<QTreeWidgetItem *> children = parent->takeChildren();
- for (QTreeWidgetItem *item : children)
- itemMap.insert(item->data(0, Qt::UserRole).toString(), item);
-
- QList<QNetworkConfiguration> allConfigurations = snap.children();
-
- while (!allConfigurations.isEmpty()) {
- QNetworkConfiguration config = allConfigurations.takeFirst();
-
- QTreeWidgetItem *item = itemMap.take(config.identifier());
- if (item) {
- updateItem(item, config);
-
- parent->addChild(item);
-
- if (config.type() == QNetworkConfiguration::ServiceNetwork)
- updateSnapConfiguration(item, config);
- } else {
- configurationAdded(config, parent);
- }
- }
-
- qDeleteAll(itemMap);
-}
-
-void BearerMonitor::updateConfigurations()
-{
- progressBar->hide();
- scanButton->show();
-
- // Just in case update online state, on Symbian platform
- // WLAN scan needs to be triggered initially to have their true state.
- onlineStateChanged(manager.isOnline());
-
- QList<QTreeWidgetItem *> items = treeWidget->findItems(QLatin1String("*"), Qt::MatchWildcard);
- QMap<QString, QTreeWidgetItem *> itemMap;
- while (!items.isEmpty()) {
- QTreeWidgetItem *item = items.takeFirst();
- itemMap.insert(item->data(0, Qt::UserRole).toString(), item);
- }
-
- QNetworkConfiguration defaultConfiguration = manager.defaultConfiguration();
- QTreeWidgetItem *defaultItem = itemMap.take(defaultConfiguration.identifier());
-
- if (defaultItem) {
- updateItem(defaultItem, defaultConfiguration);
-
- if (defaultConfiguration.type() == QNetworkConfiguration::ServiceNetwork)
- updateSnapConfiguration(defaultItem, defaultConfiguration);
- } else {
- configurationAdded(defaultConfiguration);
- }
-
- QList<QNetworkConfiguration> allConfigurations = manager.allConfigurations();
-
- while (!allConfigurations.isEmpty()) {
- QNetworkConfiguration config = allConfigurations.takeFirst();
-
- if (config.identifier() == defaultConfiguration.identifier())
- continue;
-
- QTreeWidgetItem *item = itemMap.take(config.identifier());
- if (item) {
- updateItem(item, config);
-
- if (config.type() == QNetworkConfiguration::ServiceNetwork)
- updateSnapConfiguration(item, config);
- } else {
- configurationAdded(config);
- }
- }
-
- qDeleteAll(itemMap);
-}
-
-void BearerMonitor::onlineStateChanged(bool isOnline)
-{
- if (isOnline)
- onlineState->setText(tr("Online"));
- else
- onlineState->setText(tr("Offline"));
-}
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT)
-void BearerMonitor::registerNetwork()
-{
- QTreeWidgetItem *item = treeWidget->currentItem();
- if (!item) return;
-
- QNetworkConfiguration configuration =
- manager.configurationFromIdentifier(item->data(0, Qt::UserRole).toString());
-
- const QString name = configuration.name();
-
- qDebug() << "Registering" << name << "with system";
-
- WSAQUERYSET networkInfo;
- memset(&networkInfo, 0, sizeof(networkInfo));
- networkInfo.dwSize = sizeof(networkInfo);
- networkInfo.lpszServiceInstanceName = (LPWSTR)name.utf16();
- networkInfo.dwNameSpace = NS_NLA;
-
- if (WSASetService(&networkInfo, RNRSERVICE_REGISTER, 0) == SOCKET_ERROR)
- qDebug() << "WSASetService(RNRSERVICE_REGISTER) returned" << WSAGetLastError();
-}
-
-void BearerMonitor::unregisterNetwork()
-{
- QTreeWidgetItem *item = treeWidget->currentItem();
- if (!item) return;
-
- QNetworkConfiguration configuration =
- manager.configurationFromIdentifier(item->data(0, Qt::UserRole).toString());
-
- const QString name = configuration.name();
-
- qDebug() << "Unregistering" << name << "with system";
-
- WSAQUERYSET networkInfo;
- memset(&networkInfo, 0, sizeof(networkInfo));
- networkInfo.dwSize = sizeof(networkInfo);
- networkInfo.lpszServiceInstanceName = (LPWSTR)name.utf16();
- networkInfo.dwNameSpace = NS_NLA;
-
- if (WSASetService(&networkInfo, RNRSERVICE_DELETE, 0) == SOCKET_ERROR)
- qDebug() << "WSASetService(RNRSERVICE_DELETE) returned" << WSAGetLastError();
-}
-#endif // Q_OS_WIN && !Q_OS_WINRT
-
-void BearerMonitor::showConfigurationFor(QTreeWidgetItem *item)
-{
- QString identifier;
-
- if (item)
- identifier = item->data(0, Qt::UserRole).toString();
-
- QNetworkConfiguration conf = manager.configurationFromIdentifier(identifier);
-
- switch (conf.state()) {
- case QNetworkConfiguration::Active:
- configurationState->setText(tr("Active"));
- break;
- case QNetworkConfiguration::Discovered:
- configurationState->setText(tr("Discovered"));
- break;
- case QNetworkConfiguration::Defined:
- configurationState->setText(tr("Defined"));
- break;
- case QNetworkConfiguration::Undefined:
- configurationState->setText(tr("Undefined"));
- break;
- default:
- configurationState->setText(QString());
- }
-
- switch (conf.type()) {
- case QNetworkConfiguration::InternetAccessPoint:
- configurationType->setText(tr("Internet Access Point"));
- break;
- case QNetworkConfiguration::ServiceNetwork:
- configurationType->setText(tr("Service Network"));
- break;
- case QNetworkConfiguration::UserChoice:
- configurationType->setText(tr("User Choice"));
- break;
- case QNetworkConfiguration::Invalid:
- configurationType->setText(tr("Invalid"));
- break;
- default:
- configurationType->setText(QString());
- }
-
- switch (conf.purpose()) {
- case QNetworkConfiguration::UnknownPurpose:
- configurationPurpose->setText(tr("Unknown"));
- break;
- case QNetworkConfiguration::PublicPurpose:
- configurationPurpose->setText(tr("Public"));
- break;
- case QNetworkConfiguration::PrivatePurpose:
- configurationPurpose->setText(tr("Private"));
- break;
- case QNetworkConfiguration::ServiceSpecificPurpose:
- configurationPurpose->setText(tr("Service Specific"));
- break;
- default:
- configurationPurpose->setText(QString());
- }
-
- configurationIdentifier->setText(conf.identifier());
-
- configurationRoaming->setText(conf.isRoamingAvailable() ? tr("Available") : tr("Not available"));
-
- configurationChildren->setText(QString::number(conf.children().count()));
-
- configurationName->setText(conf.name());
-}
-
-void BearerMonitor::createSessionFor(QTreeWidgetItem *item)
-{
- const QString identifier = item->data(0, Qt::UserRole).toString();
-
- QNetworkConfiguration conf = manager.configurationFromIdentifier(identifier);
-
- SessionWidget *session = new SessionWidget(conf);
-
- tabWidget->addTab(session, conf.name());
-
- sessionGroup->show();
-
- sessionWidgets.append(session);
-}
-
-void BearerMonitor::createNewSession()
-{
- QTreeWidgetItem *item = treeWidget->currentItem();
- if (!item) return;
-
- createSessionFor(item);
-}
-
-void BearerMonitor::deleteSession()
-{
- SessionWidget *session = qobject_cast<SessionWidget *>(tabWidget->currentWidget());
- if (session) {
- sessionWidgets.removeAll(session);
-
- delete session;
-
- if (tabWidget->count() == 0)
- sessionGroup->hide();
- }
-}
-
-void BearerMonitor::performScan()
-{
- scanButton->hide();
- progressBar->show();
- manager.updateConfigurations();
-}