File indexing completed on 2024-04-21 04:56:46
0001 /* 0002 * SPDX-FileCopyrightText: 2016 Aleix Pol Gonzalez <aleixpol@kde.org> 0003 * SPDX-FileCopyrightText: 2020 Piyush Aggarwal <piyushaggarwal002@gmail.com> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0006 */ 0007 0008 #include "connectivity_action.h" 0009 0010 ConnectivityAction::ConnectivityAction(DeviceDbusInterface *device) 0011 : QAction(nullptr) 0012 , m_connectivityiface(device->id()) 0013 { 0014 setCellularNetworkStrength(m_connectivityiface.cellularNetworkStrength()); 0015 setCellularNetworkType(m_connectivityiface.cellularNetworkType()); 0016 0017 connect(&m_connectivityiface, &ConnectivityReportDbusInterface::refreshed, this, [this](const QString &type, int strenght) { 0018 setCellularNetworkStrength(strenght); 0019 setCellularNetworkType(type); 0020 }); 0021 0022 setIcon(QIcon::fromTheme(QStringLiteral("network-wireless"))); 0023 0024 ConnectivityAction::update(); 0025 } 0026 0027 void ConnectivityAction::update() 0028 { 0029 if (m_cellularNetworkStrength < 0) { 0030 setText(i18nc("The fallback text to display in case the remote device does not have a cellular connection", "No Cellular Connectivity")); 0031 } else { 0032 setText(i18nc("Display the cellular connection type and an approximate percentage of signal strength", 0033 "%1 | ~%2%", 0034 m_cellularNetworkType, 0035 m_cellularNetworkStrength * 25)); 0036 } 0037 0038 // set icon name 0039 0040 QString iconName = QStringLiteral("network-mobile"); 0041 0042 if (m_cellularNetworkStrength < 0) { 0043 iconName += QStringLiteral("-off"); 0044 } else { 0045 int signalStrength; 0046 switch (m_cellularNetworkStrength) { 0047 case 0: 0048 signalStrength = 0; 0049 break; 0050 case 1: 0051 signalStrength = 20; 0052 break; 0053 case 2: 0054 signalStrength = 60; 0055 break; 0056 case 3: 0057 signalStrength = 80; 0058 break; 0059 default: 0060 signalStrength = 100; 0061 break; 0062 } 0063 iconName += QStringLiteral("-") + QString::number(signalStrength); 0064 } 0065 0066 if (connectivity_action::networkTypesWithIcons.contains(m_cellularNetworkType)) { 0067 iconName += QStringLiteral("-") + m_cellularNetworkType.toLower(); 0068 } 0069 0070 setIcon(QIcon::fromTheme(iconName)); 0071 } 0072 0073 void ConnectivityAction::setCellularNetworkStrength(int cellularNetworkStrength) 0074 { 0075 m_cellularNetworkStrength = cellularNetworkStrength; 0076 update(); 0077 } 0078 0079 void ConnectivityAction::setCellularNetworkType(QString cellularNetworkType) 0080 { 0081 m_cellularNetworkType = cellularNetworkType; 0082 update(); 0083 } 0084 0085 #include "moc_connectivity_action.cpp"