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

0001 /*
0002     SPDX-FileCopyrightText: 2010-2012 Lamarque Souza <lamarque@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #ifndef PLASMA_NM_MOBILE_PROVIDERS_H
0008 #define PLASMA_NM_MOBILE_PROVIDERS_H
0009 
0010 #include <QDomDocument>
0011 #include <QHash>
0012 #include <QStringList>
0013 #include <QVariantMap>
0014 
0015 #include <NetworkManagerQt/ConnectionSettings>
0016 
0017 // adapted from https://invent.kde.org/plasma/plasma-nm/-/blob/master/libs/editor/mobileproviders.h
0018 // we only use gsm, ignore cdma
0019 
0020 struct ProviderData {
0021     QStringList mccmncs;
0022     QString name;
0023 };
0024 
0025 class Q_DECL_EXPORT MobileProviders
0026 {
0027 public:
0028     static const QString ProvidersFile;
0029 
0030     enum ErrorCodes {
0031         Success,
0032         CountryCodesMissing,
0033         ProvidersMissing,
0034         ProvidersIsNull,
0035         ProvidersWrongFormat,
0036         ProvidersFormatNotSupported,
0037     };
0038 
0039     MobileProviders();
0040     ~MobileProviders();
0041 
0042     QStringList getCountryList() const;
0043     QString countryFromLocale() const;
0044     QString getCountryName(const QString &key) const
0045     {
0046         return mCountries.value(key);
0047     }
0048     QStringList getApns(const QString &provider);
0049     QStringList getNetworkIds(const QString &provider);
0050     QVariantMap getApnInfo(const QString &apn);
0051     QVariantMap getCdmaInfo(const QString &provider);
0052     QStringList getProvidersFromMCCMNC(const QString &mccmnc);
0053     QString getGsmNumber() const
0054     {
0055         return QString("*99#");
0056     }
0057     QString getCdmaNumber() const
0058     {
0059         return QString("#777");
0060     }
0061     inline ErrorCodes getError()
0062     {
0063         return mError;
0064     }
0065 
0066 private:
0067     ProviderData parseProvider(const QDomNode &providerNode);
0068 
0069     QHash<QString, QString> mCountries;
0070     QHash<QString, QString> mMccMncToName;
0071     QMap<QString, QDomNode> mProvidersGsm;
0072     QMap<QString, QDomNode> mProvidersCdma;
0073     QMap<QString, QDomNode> mApns;
0074     QStringList mNetworkIds;
0075     QDomDocument mDocProviders;
0076     QDomElement docElement;
0077     ErrorCodes mError;
0078     QString getNameByLocale(const QMap<QString, QString> &names) const;
0079 };
0080 
0081 #endif // PLASMA_NM_MOBILE_PROVIDERS_H