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)10 ConnectivityAction::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()27 void 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)62 void ConnectivityAction::setCellularNetworkStrength(int cellularNetworkStrength)
63 {
64     m_cellularNetworkStrength = cellularNetworkStrength;
65     update();
66 }
67 
setCellularNetworkType(QString cellularNetworkType)68 void ConnectivityAction::setCellularNetworkType(QString cellularNetworkType)
69 {
70     m_cellularNetworkType = cellularNetworkType;
71     update();
72 }
73