File indexing completed on 2024-05-12 17:00:16
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Arjen Hiemstra <ahiemstra@heimr.nl> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #pragma once 0008 0009 #include <memory> 0010 #include <QHash> 0011 0012 #include "NetworkBackend.h" 0013 #include "NetworkDevice.h" 0014 0015 class QTimer; 0016 0017 namespace NetworkManager 0018 { 0019 class Device; 0020 class DeviceStatistics; 0021 class WirelessDevice; 0022 } 0023 0024 class NetworkManagerDevice : public NetworkDevice 0025 { 0026 Q_OBJECT 0027 0028 public: 0029 NetworkManagerDevice(const QString &id, QSharedPointer<NetworkManager::Device> device); 0030 ~NetworkManagerDevice() override; 0031 0032 void update(); 0033 0034 bool isConnected() const; 0035 0036 Q_SIGNAL void connected(NetworkManagerDevice *device); 0037 Q_SIGNAL void disconnected(NetworkManagerDevice *device); 0038 0039 private: 0040 void updateWifi(); 0041 0042 QSharedPointer<NetworkManager::Device> m_device; 0043 QSharedPointer<NetworkManager::DeviceStatistics> m_statistics; 0044 NetworkManager::WirelessDevice *m_wifiDevice = nullptr; 0045 std::unique_ptr<QTimer> m_statisticsTimer; 0046 bool m_connected = false; 0047 bool m_restoreTimer = false; 0048 uint m_initialStatisticsRate; 0049 }; 0050 0051 class NetworkManagerBackend : public NetworkBackend 0052 { 0053 Q_OBJECT 0054 0055 public: 0056 NetworkManagerBackend(QObject *parent = nullptr); 0057 ~NetworkManagerBackend() override; 0058 0059 bool isSupported() override; 0060 void start() override; 0061 void stop() override; 0062 0063 private: 0064 void onDeviceAdded(const QString &uni); 0065 void onDeviceRemoved(const QString &uni); 0066 0067 QHash<QString, NetworkManagerDevice *> m_devices; 0068 }; 0069