File indexing completed on 2024-05-05 05:36:38

0001 /*
0002     SPDX-FileCopyrightText: 2018 Martin Kacej <m.kacej@atlas.sk>
0003     SPDX-FileCopyrightText: 2020-2021 Devin Lin <espidev@gmail.com>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #pragma once
0009 
0010 #include <QSharedPointer>
0011 
0012 #include <KQuickConfigModule>
0013 
0014 #include "mobileproviders.h"
0015 #include "modem.h"
0016 #include "modemdetails.h"
0017 #include "sim.h"
0018 
0019 #include <NetworkManagerQt/CdmaSetting>
0020 #include <NetworkManagerQt/ConnectionSettings>
0021 #include <NetworkManagerQt/GsmSetting>
0022 #include <NetworkManagerQt/Manager>
0023 #include <NetworkManagerQt/ModemDevice>
0024 #include <NetworkManagerQt/Settings>
0025 
0026 #include <ModemManagerQt/GenericTypes>
0027 #include <ModemManagerQt/Manager>
0028 #include <ModemManagerQt/ModemDevice>
0029 
0030 class Sim;
0031 class Modem;
0032 class MobileProviders;
0033 
0034 class InlineMessage : public QObject
0035 {
0036     Q_OBJECT
0037     Q_PROPERTY(int type READ type NOTIFY typeChanged)
0038     Q_PROPERTY(QString message READ message NOTIFY messageChanged)
0039 
0040 public:
0041     enum Type {
0042         Information,
0043         Positive,
0044         Warning,
0045         Error,
0046     };
0047 
0048     InlineMessage(QObject *parent = nullptr, Type type = Information, QString message = "");
0049 
0050     Type type();
0051     QString message();
0052 
0053 Q_SIGNALS:
0054     void typeChanged();
0055     void messageChanged();
0056 
0057 private:
0058     Type m_type;
0059     QString m_message;
0060 };
0061 
0062 class CellularNetworkSettings : public KQuickConfigModule
0063 {
0064     Q_OBJECT
0065     Q_PROPERTY(bool modemFound READ modemFound NOTIFY modemFoundChanged)
0066     Q_PROPERTY(Modem *selectedModem READ selectedModem NOTIFY selectedModemChanged)
0067     Q_PROPERTY(QList<Sim *> sims READ sims NOTIFY simsChanged)
0068     Q_PROPERTY(QList<InlineMessage *> messages READ messages NOTIFY messagesChanged)
0069 
0070 public:
0071     CellularNetworkSettings(QObject *parent, const KPluginMetaData &metaData);
0072 
0073     static CellularNetworkSettings *instance();
0074 
0075     Modem *selectedModem();
0076     QList<Modem *> modems();
0077     QList<Sim *> sims();
0078 
0079     bool modemFound();
0080 
0081     QList<InlineMessage *> messages();
0082     void addMessage(InlineMessage::Type type, QString msg);
0083     Q_INVOKABLE void removeMessage(int index);
0084 
0085 Q_SIGNALS:
0086     void modemFoundChanged();
0087     void selectedModemChanged();
0088     void simsChanged();
0089     void messagesChanged();
0090 
0091 private:
0092     void updateModemList();
0093     void fillSims();
0094 
0095     QList<Modem *> m_modemList;
0096     QList<Sim *> m_simList;
0097 
0098     QList<InlineMessage *> m_messages;
0099 
0100     static CellularNetworkSettings *staticInst;
0101 };