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"