File indexing completed on 2024-04-28 16:52:22

0001 // SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
0002 // SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004 
0005 #pragma once
0006 
0007 #include <ModemManagerQt/Manager>
0008 #include <ModemManagerQt/Modem3Gpp>
0009 
0010 #include <NetworkManagerQt/Connection>
0011 #include <NetworkManagerQt/ModemDevice>
0012 
0013 #include <QObject>
0014 
0015 // We make the assumption that there is only one modem.
0016 class SignalIndicator : public QObject
0017 {
0018     Q_OBJECT
0019 
0020     Q_PROPERTY(int strength READ strength NOTIFY strengthChanged)
0021     Q_PROPERTY(QString name READ name NOTIFY nameChanged)
0022     Q_PROPERTY(bool modemAvailable READ modemAvailable NOTIFY modemAvailableChanged)
0023     Q_PROPERTY(bool simLocked READ simLocked NOTIFY simLockedChanged)
0024     Q_PROPERTY(bool simEmpty READ simEmpty NOTIFY simEmptyChanged)
0025     Q_PROPERTY(bool mobileDataSupported READ mobileDataSupported NOTIFY mobileDataSupportedChanged)
0026     Q_PROPERTY(bool mobileDataEnabled READ mobileDataEnabled WRITE setMobileDataEnabled NOTIFY mobileDataEnabledChanged)
0027     Q_PROPERTY(bool needsAPNAdded READ needsAPNAdded NOTIFY mobileDataEnabledChanged)
0028 
0029 public:
0030     SignalIndicator(QObject *parent = nullptr);
0031 
0032     int strength() const;
0033     QString name() const;
0034     bool modemAvailable() const;
0035     bool simLocked() const;
0036     bool simEmpty() const;
0037     bool mobileDataSupported() const;
0038     bool mobileDataEnabled() const;
0039     bool needsAPNAdded() const;
0040 
0041     void setMobileDataEnabled(bool enabled);
0042 
0043 Q_SIGNALS:
0044     void strengthChanged();
0045     void nameChanged();
0046     void modemAvailableChanged();
0047     void simLockedChanged();
0048     void simEmptyChanged();
0049     void mobileDataSupportedChanged();
0050     void mobileDataEnabledChanged();
0051 
0052 private:
0053     NetworkManager::ModemDevice::Ptr m_nmModem;
0054     ModemManager::ModemDevice::Ptr m_modemDevice;
0055     ModemManager::Modem::Ptr m_modem;
0056     ModemManager::Modem3gpp::Ptr m_3gppModem;
0057 
0058     void updateModemManagerModem();
0059     void updateNetworkManagerModem();
0060 };