File indexing completed on 2024-04-28 04:41:42

0001 /*
0002     SPDX-FileCopyrightText: 2022 Volker Krause <vkrause@kde.org>
0003     SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #include "wifimonitor_p.h"
0007 
0008 #include <NetworkManagerQt/Manager>
0009 #include <NetworkManagerQt/WirelessSetting>
0010 
0011 using namespace KPublicTransport;
0012 
0013 WifiMonitor::WifiMonitor(QObject *parent)
0014     : QObject(parent)
0015 {
0016     const auto getSsid = [this](){
0017         const auto connections = NetworkManager::activeConnections();
0018         for (const auto &con : connections) {
0019             if (con->type() != NetworkManager::ConnectionSettings::Wireless) {
0020                 continue;
0021             }
0022             setSsid(QString::fromUtf8(con->connection()->settings()->setting(NetworkManager::Setting::Wireless).staticCast<NetworkManager::WirelessSetting>()->ssid()));
0023             break;
0024         }
0025     };
0026 
0027     connect(NetworkManager::notifier(), &NetworkManager::Notifier::activatingConnectionChanged, this, getSsid);
0028     connect(NetworkManager::notifier(), &NetworkManager::Notifier::activeConnectionAdded, this, getSsid);
0029     connect(NetworkManager::notifier(), &NetworkManager::Notifier::activeConnectionRemoved, this, getSsid);
0030     connect(NetworkManager::notifier(), &NetworkManager::Notifier::networkingEnabledChanged, this, &WifiMonitor::statusChanged);
0031     connect(NetworkManager::notifier(), &NetworkManager::Notifier::wirelessEnabledChanged, this, &WifiMonitor::statusChanged);
0032 
0033     getSsid();
0034 }
0035 
0036 WifiMonitor::~WifiMonitor() = default;
0037 
0038 WifiMonitor::Status WifiMonitor::status() const
0039 {
0040     if (!NetworkManager::isNetworkingEnabled()) {
0041         return NotAvailable;
0042     }
0043 
0044     return NetworkManager::isWirelessEnabled() ? Available : WifiNotEnabled;
0045 }
0046 
0047 void WifiMonitor::requestPermissions()
0048 {
0049 }