~pete-woods/indicator-network/wapi-lp1597681

« back to all changes in this revision

Viewing changes to src/indicator/nmofono/connectivity-service-settings.cpp

New Connectivity Service Private API for managing mobile data and SIM cards. Tests. (LP: #1373463)

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
 
20
20
#include <nmofono/connectivity-service-settings.h>
21
21
 
 
22
using namespace std;
22
23
using namespace nmofono;
23
24
 
24
25
class ConnectivityServiceSettings::Private : public QObject
27
28
public:
28
29
 
29
30
    ConnectivityServiceSettings &p;
30
 
    QSettings *m_settings;
 
31
    unique_ptr<QSettings> m_settings;
31
32
 
32
33
    Private(ConnectivityServiceSettings &parent)
33
34
        : p(parent)
34
35
    {
35
 
        m_settings = new QSettings(QSettings::IniFormat,
36
 
                                   QSettings::UserScope,
37
 
                                   "Ubuntu",
38
 
                                   "connectivityservice",
39
 
                                   this);
40
36
    }
41
37
 
42
38
    virtual ~Private()
54
50
    : QObject(parent),
55
51
      d{new Private(*this)}
56
52
{
57
 
 
 
53
    if (qEnvironmentVariableIsSet("INDICATOR_NETWORK_SETTINGS_PATH"))
 
54
    {
 
55
        // For testing only
 
56
        QString path = QString::fromUtf8(qgetenv("INDICATOR_NETWORK_SETTINGS_PATH")) + "/config.ini";
 
57
        d->m_settings = make_unique<QSettings>(path, QSettings::IniFormat);
 
58
    }
 
59
    else
 
60
    {
 
61
        d->m_settings = make_unique<QSettings>(QSettings::IniFormat,
 
62
                                               QSettings::UserScope,
 
63
                                               "connectivity-service",
 
64
                                               "config");
 
65
    }
58
66
}
59
67
 
60
68
ConnectivityServiceSettings::~ConnectivityServiceSettings()
66
74
{
67
75
    return d->m_settings->value("MobileDataEnabled");
68
76
}
 
77
 
69
78
void ConnectivityServiceSettings::setMobileDataEnabled(bool value)
70
79
{
71
80
    d->m_settings->setValue("MobileDataEnabled", value);
72
 
    d->m_settings->sync();
73
81
}
74
82
 
75
83
QVariant ConnectivityServiceSettings::simForMobileData()
76
84
{
77
85
    return d->m_settings->value("SimForMobileData");
78
86
}
79
 
void ConnectivityServiceSettings::setSimForMobileData(const QString &imsi)
 
87
 
 
88
void ConnectivityServiceSettings::setSimForMobileData(const QString &iccid)
80
89
{
81
 
    d->m_settings->setValue("SimForMobileData", imsi);
82
 
    d->m_settings->sync();
 
90
    d->m_settings->setValue("SimForMobileData", iccid);
83
91
}
84
92
 
85
93
QStringList ConnectivityServiceSettings::knownSims()
100
108
void ConnectivityServiceSettings::setKnownSims(const QStringList &list)
101
109
{
102
110
    d->m_settings->setValue("KnownSims", QVariant(list));
103
 
    d->m_settings->sync();
104
111
}
105
112
 
106
 
wwan::Sim::Ptr ConnectivityServiceSettings::createSimFromSettings(const QString &imsi)
 
113
wwan::Sim::Ptr ConnectivityServiceSettings::createSimFromSettings(const QString &iccid)
107
114
{
108
 
    d->m_settings->beginGroup(QString("Sims/%1/").arg(imsi));
 
115
    d->m_settings->beginGroup(QString("Sims/%1/").arg(iccid));
 
116
    QVariant imsi_var = d->m_settings->value("Imsi");
109
117
    QVariant primaryPhoneNumber_var = d->m_settings->value("PrimaryPhoneNumber");
110
118
    QVariant mcc_var = d->m_settings->value("Mcc");
111
119
    QVariant mnc_var = d->m_settings->value("Mnc");
113
121
    QVariant dataRoamingEnabled_var = d->m_settings->value("DataRoamingEnabled");
114
122
    d->m_settings->endGroup();
115
123
 
116
 
    if (imsi.isNull() ||
 
124
    if (iccid.isNull() ||
 
125
            imsi_var.isNull() ||
117
126
            primaryPhoneNumber_var.isNull() ||
118
127
            mcc_var.isNull() ||
119
128
            mnc_var.isNull() ||
120
129
            preferredLanguages_var.isNull() ||
121
130
            dataRoamingEnabled_var.isNull())
122
131
    {
123
 
        qWarning() << "Corrupt settings for SIM: " << imsi;
124
 
        d->m_settings->remove(QString("Sims/%1/").arg(imsi));
 
132
        qWarning() << "Corrupt settings for SIM: " << iccid;
 
133
        d->m_settings->remove(QString("Sims/%1/").arg(iccid));
125
134
        return wwan::Sim::Ptr();
126
135
    }
127
136
 
128
 
    return wwan::Sim::Ptr(new wwan::Sim(imsi,
 
137
    return wwan::Sim::Ptr(new wwan::Sim(iccid,
 
138
                                        imsi_var.toString(),
129
139
                                        primaryPhoneNumber_var.toString(),
130
140
                                        mcc_var.toString(),
131
141
                                        mnc_var.toString(),
135
145
 
136
146
void ConnectivityServiceSettings::saveSimToSettings(wwan::Sim::Ptr sim)
137
147
{
138
 
    d->m_settings->beginGroup(QString("Sims/%1/").arg(sim->imsi()));
139
 
    d->m_settings->setValue("PrimaryPhoneNumber", QVariant(sim->primaryPhoneNumber()));
 
148
    d->m_settings->beginGroup(QString("Sims/%1/").arg(sim->iccid()));
 
149
    d->m_settings->setValue("Imsi", sim->imsi());
 
150
    d->m_settings->setValue("PrimaryPhoneNumber", sim->primaryPhoneNumber());
140
151
    d->m_settings->setValue("Mcc", sim->mcc());
141
152
    d->m_settings->setValue("Mnc", sim->mnc());
142
153
    d->m_settings->setValue("PreferredLanguages", QVariant(sim->preferredLanguages()));
143
154
    d->m_settings->setValue("DataRoamingEnabled", sim->dataRoamingEnabled());
144
155
    d->m_settings->endGroup();
145
 
    d->m_settings->sync();
146
156
}
147
157
 
148
158
#include "connectivity-service-settings.moc"