1 /* 2 * SPDX-FileCopyrightText: 2016 Aleix Pol Gonzalez <aleixpol@kde.org> 3 * SPDX-FileCopyrightText: 2020 Piyush Aggarwal <piyushaggarwal002@gmail.com> 4 * 5 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 6 */ 7 8 #include "connectivity_action.h" 9 ConnectivityAction(DeviceDbusInterface * device)10ConnectivityAction::ConnectivityAction(DeviceDbusInterface* device) 11 : QAction(nullptr) 12 , m_connectivityiface(device->id()) 13 { 14 setCellularNetworkStrength(m_connectivityiface.cellularNetworkStrength()); 15 setCellularNetworkType(m_connectivityiface.cellularNetworkType()); 16 17 connect(&m_connectivityiface, &ConnectivityReportDbusInterface::refreshedProxy, this, [this]{ 18 setCellularNetworkStrength(m_connectivityiface.cellularNetworkStrength()); 19 setCellularNetworkType(m_connectivityiface.cellularNetworkType()); 20 }); 21 22 setIcon(QIcon::fromTheme(QStringLiteral("network-wireless"))); 23 24 ConnectivityAction::update(); 25 } 26 update()27void ConnectivityAction::update() 28 { 29 if (m_cellularNetworkStrength < 0) { 30 setText(i18nc("The fallback text to display in case the remote device does not have a cellular connection", "No Cellular Connectivity")); 31 } else { 32 setText(i18nc("Display the cellular connection type and an approximate percentage of signal strength","%1 | ~%2%", m_cellularNetworkType, m_cellularNetworkStrength * 25)); 33 } 34 35 // set icon name 36 37 QString iconName = QStringLiteral("network-mobile"); 38 39 if (m_cellularNetworkStrength < 0) { 40 iconName += QStringLiteral("-off"); 41 } else { 42 int signalStrength; 43 switch (m_cellularNetworkStrength) 44 { 45 case 0 : signalStrength = 0; break; 46 case 1 : signalStrength = 20; break; 47 case 2 : signalStrength = 60; break; 48 case 3 : signalStrength = 80; break; 49 default : signalStrength = 100; break; 50 } 51 iconName += QStringLiteral("-") + QString::number(signalStrength); 52 } 53 54 if (connectivity_action::networkTypesWithIcons.contains(m_cellularNetworkType)) { 55 iconName += QStringLiteral("-") + m_cellularNetworkType.toLower(); 56 } 57 58 setIcon(QIcon::fromTheme(iconName)); 59 60 } 61 setCellularNetworkStrength(int cellularNetworkStrength)62void ConnectivityAction::setCellularNetworkStrength(int cellularNetworkStrength) 63 { 64 m_cellularNetworkStrength = cellularNetworkStrength; 65 update(); 66 } 67 setCellularNetworkType(QString cellularNetworkType)68void ConnectivityAction::setCellularNetworkType(QString cellularNetworkType) 69 { 70 m_cellularNetworkType = cellularNetworkType; 71 update(); 72 } 73