File indexing completed on 2024-04-28 07:49:06
0001 /* 0002 SPDX-FileCopyrightText: 2012-2013 Jan Grulich <jgrulich@redhat.com> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "gsmsetting.h" 0008 #include "gsmsetting_p.h" 0009 0010 #define NM_SETTING_GSM_NETWORK_TYPE "network-type" 0011 #define NM_SETTING_GSM_ALLOWED_BANDS "allowed-bands" 0012 0013 #include <QDebug> 0014 0015 NetworkManager::GsmSettingPrivate::GsmSettingPrivate() 0016 : name(NM_SETTING_GSM_SETTING_NAME) 0017 , passwordFlags(NetworkManager::GsmSetting::None) 0018 , networkType(NetworkManager::GsmSetting::Any) 0019 , pinFlags(NetworkManager::GsmSetting::None) 0020 , allowedBand(1) 0021 , homeOnly(false) 0022 { 0023 } 0024 0025 NetworkManager::GsmSetting::GsmSetting() 0026 : Setting(Setting::Gsm) 0027 , d_ptr(new GsmSettingPrivate()) 0028 { 0029 } 0030 0031 NetworkManager::GsmSetting::GsmSetting(const Ptr &other) 0032 : Setting(other) 0033 , d_ptr(new GsmSettingPrivate()) 0034 { 0035 setNumber(other->number()); 0036 setUsername(other->username()); 0037 setPassword(other->password()); 0038 setPasswordFlags(other->passwordFlags()); 0039 setApn(other->apn()); 0040 setNetworkId(other->networkId()); 0041 setNetworkType(other->networkType()); 0042 setPin(other->pin()); 0043 setPinFlags(other->pinFlags()); 0044 setAllowedBand(other->allowedBand()); 0045 setHomeOnly(other->homeOnly()); 0046 setDeviceId(other->deviceId()); 0047 setSimId(other->simId()); 0048 setSimOperatorId(other->simOperatorId()); 0049 } 0050 0051 NetworkManager::GsmSetting::~GsmSetting() 0052 { 0053 delete d_ptr; 0054 } 0055 0056 QString NetworkManager::GsmSetting::name() const 0057 { 0058 Q_D(const GsmSetting); 0059 0060 return d->name; 0061 } 0062 0063 void NetworkManager::GsmSetting::setNumber(const QString &number) 0064 { 0065 Q_D(GsmSetting); 0066 0067 d->number = number; 0068 } 0069 0070 QString NetworkManager::GsmSetting::number() const 0071 { 0072 Q_D(const GsmSetting); 0073 0074 return d->number; 0075 } 0076 0077 void NetworkManager::GsmSetting::setUsername(const QString &username) 0078 { 0079 Q_D(GsmSetting); 0080 0081 d->username = username; 0082 } 0083 0084 QString NetworkManager::GsmSetting::username() const 0085 { 0086 Q_D(const GsmSetting); 0087 0088 return d->username; 0089 } 0090 0091 void NetworkManager::GsmSetting::setPassword(const QString &password) 0092 { 0093 Q_D(GsmSetting); 0094 0095 d->password = password; 0096 } 0097 0098 QString NetworkManager::GsmSetting::password() const 0099 { 0100 Q_D(const GsmSetting); 0101 0102 return d->password; 0103 } 0104 0105 void NetworkManager::GsmSetting::setPasswordFlags(GsmSetting::SecretFlags flags) 0106 { 0107 Q_D(GsmSetting); 0108 0109 d->passwordFlags = flags; 0110 } 0111 0112 NetworkManager::GsmSetting::SecretFlags NetworkManager::GsmSetting::passwordFlags() const 0113 { 0114 Q_D(const GsmSetting); 0115 0116 return d->passwordFlags; 0117 } 0118 0119 void NetworkManager::GsmSetting::setApn(const QString &apn) 0120 { 0121 Q_D(GsmSetting); 0122 0123 d->apn = apn; 0124 } 0125 0126 QString NetworkManager::GsmSetting::apn() const 0127 { 0128 Q_D(const GsmSetting); 0129 0130 return d->apn; 0131 } 0132 0133 void NetworkManager::GsmSetting::setNetworkId(const QString &id) 0134 { 0135 Q_D(GsmSetting); 0136 0137 d->networkId = id; 0138 } 0139 0140 QString NetworkManager::GsmSetting::networkId() const 0141 { 0142 Q_D(const GsmSetting); 0143 0144 return d->networkId; 0145 } 0146 0147 void NetworkManager::GsmSetting::setNetworkType(NetworkType type) 0148 { 0149 Q_D(GsmSetting); 0150 0151 d->networkType = type; 0152 } 0153 0154 NetworkManager::GsmSetting::NetworkType NetworkManager::GsmSetting::networkType() const 0155 { 0156 Q_D(const GsmSetting); 0157 0158 return d->networkType; 0159 } 0160 0161 void NetworkManager::GsmSetting::setPin(const QString &pin) 0162 { 0163 Q_D(GsmSetting); 0164 0165 d->pin = pin; 0166 } 0167 0168 QString NetworkManager::GsmSetting::pin() const 0169 { 0170 Q_D(const GsmSetting); 0171 0172 return d->pin; 0173 } 0174 0175 void NetworkManager::GsmSetting::setPinFlags(GsmSetting::SecretFlags flags) 0176 { 0177 Q_D(GsmSetting); 0178 0179 d->pinFlags = flags; 0180 } 0181 0182 NetworkManager::GsmSetting::SecretFlags NetworkManager::GsmSetting::pinFlags() const 0183 { 0184 Q_D(const GsmSetting); 0185 0186 return d->pinFlags; 0187 } 0188 0189 void NetworkManager::GsmSetting::setAllowedBand(quint32 band) 0190 { 0191 Q_D(GsmSetting); 0192 0193 d->allowedBand = band; 0194 } 0195 0196 quint32 NetworkManager::GsmSetting::allowedBand() const 0197 { 0198 Q_D(const GsmSetting); 0199 0200 return d->allowedBand; 0201 } 0202 0203 void NetworkManager::GsmSetting::setHomeOnly(bool homeOnly) 0204 { 0205 Q_D(GsmSetting); 0206 0207 d->homeOnly = homeOnly; 0208 } 0209 0210 bool NetworkManager::GsmSetting::homeOnly() const 0211 { 0212 Q_D(const GsmSetting); 0213 0214 return d->homeOnly; 0215 } 0216 0217 void NetworkManager::GsmSetting::setDeviceId(const QString &id) 0218 { 0219 Q_D(GsmSetting); 0220 0221 d->deviceId = id; 0222 } 0223 0224 QString NetworkManager::GsmSetting::deviceId() const 0225 { 0226 Q_D(const GsmSetting); 0227 0228 return d->deviceId; 0229 } 0230 0231 void NetworkManager::GsmSetting::setSimId(const QString &id) 0232 { 0233 Q_D(GsmSetting); 0234 0235 d->simId = id; 0236 } 0237 0238 QString NetworkManager::GsmSetting::simId() const 0239 { 0240 Q_D(const GsmSetting); 0241 0242 return d->simId; 0243 } 0244 0245 void NetworkManager::GsmSetting::setSimOperatorId(const QString &id) 0246 { 0247 Q_D(GsmSetting); 0248 0249 d->simOperatorId = id; 0250 } 0251 0252 QString NetworkManager::GsmSetting::simOperatorId() const 0253 { 0254 Q_D(const GsmSetting); 0255 0256 return d->simOperatorId; 0257 } 0258 0259 void NetworkManager::GsmSetting::secretsFromMap(const QVariantMap &secrets) 0260 { 0261 if (secrets.contains(QLatin1String(NM_SETTING_GSM_PASSWORD))) { 0262 setPassword(secrets.value(QLatin1String(NM_SETTING_GSM_PASSWORD)).toString()); 0263 } 0264 0265 if (secrets.contains(QLatin1String(NM_SETTING_GSM_PIN))) { 0266 setPin(secrets.value(QLatin1String(NM_SETTING_GSM_PIN)).toString()); 0267 } 0268 } 0269 0270 QVariantMap NetworkManager::GsmSetting::secretsToMap() const 0271 { 0272 QVariantMap secrets; 0273 0274 if (!password().isEmpty()) { 0275 secrets.insert(QLatin1String(NM_SETTING_GSM_PASSWORD), password()); 0276 } 0277 0278 if (!pin().isEmpty()) { 0279 secrets.insert(QLatin1String(NM_SETTING_GSM_PIN), pin()); 0280 } 0281 0282 return secrets; 0283 } 0284 0285 QStringList NetworkManager::GsmSetting::needSecrets(bool requestNew) const 0286 { 0287 QStringList list; 0288 0289 if ((password().isEmpty() || requestNew) && !passwordFlags().testFlag(NotRequired)) { 0290 list << QLatin1String(NM_SETTING_GSM_PASSWORD); 0291 } 0292 0293 if ((pin().isEmpty() || requestNew) && !pinFlags().testFlag(NotRequired)) { 0294 list << QLatin1String(NM_SETTING_GSM_PIN); 0295 } 0296 0297 return list; 0298 } 0299 0300 void NetworkManager::GsmSetting::fromMap(const QVariantMap &setting) 0301 { 0302 if (setting.contains(QLatin1String(NM_SETTING_GSM_NUMBER))) { 0303 setNumber(setting.value(QLatin1String(NM_SETTING_GSM_NUMBER)).toString()); 0304 } 0305 0306 if (setting.contains(QLatin1String(NM_SETTING_GSM_USERNAME))) { 0307 setUsername(setting.value(QLatin1String(NM_SETTING_GSM_USERNAME)).toString()); 0308 } 0309 0310 // Secrets 0311 if (setting.contains(QLatin1String(NM_SETTING_GSM_PASSWORD))) { 0312 setPassword(setting.value(QLatin1String(NM_SETTING_GSM_PASSWORD)).toString()); 0313 } 0314 0315 if (setting.contains(QLatin1String(NM_SETTING_GSM_PASSWORD_FLAGS))) { 0316 setPasswordFlags((SecretFlags)setting.value(QLatin1String(NM_SETTING_GSM_PASSWORD_FLAGS)).toInt()); 0317 } 0318 0319 if (setting.contains(QLatin1String(NM_SETTING_GSM_APN))) { 0320 setApn(setting.value(QLatin1String(NM_SETTING_GSM_APN)).toString()); 0321 } 0322 0323 if (setting.contains(QLatin1String(NM_SETTING_GSM_NETWORK_ID))) { 0324 setNetworkId(setting.value(QLatin1String(NM_SETTING_GSM_NETWORK_ID)).toString()); 0325 } 0326 0327 if (setting.contains(QLatin1String(NM_SETTING_GSM_NETWORK_TYPE))) { 0328 setNetworkType((NetworkType)setting.value(QLatin1String(NM_SETTING_GSM_NETWORK_TYPE)).toInt()); 0329 } 0330 0331 // Secrets 0332 if (setting.contains(QLatin1String(NM_SETTING_GSM_PIN))) { 0333 setPin(setting.value(QLatin1String(NM_SETTING_GSM_PIN)).toString()); 0334 } 0335 0336 if (setting.contains(QLatin1String(NM_SETTING_GSM_PIN_FLAGS))) { 0337 setPinFlags((SecretFlags)setting.value(QLatin1String(NM_SETTING_GSM_PIN_FLAGS)).toInt()); 0338 } 0339 0340 if (setting.contains(QLatin1String(NM_SETTING_GSM_ALLOWED_BANDS))) { 0341 setAllowedBand(setting.value(QLatin1String(NM_SETTING_GSM_ALLOWED_BANDS)).toUInt()); 0342 } 0343 0344 if (setting.contains(QLatin1String(NM_SETTING_GSM_HOME_ONLY))) { 0345 setHomeOnly(setting.value(QLatin1String(NM_SETTING_GSM_HOME_ONLY)).toBool()); 0346 } 0347 0348 if (setting.contains(QLatin1String(NM_SETTING_GSM_DEVICE_ID))) { 0349 setDeviceId(setting.value(QLatin1String(NM_SETTING_GSM_DEVICE_ID)).toString()); 0350 } 0351 0352 if (setting.contains(QLatin1String(NM_SETTING_GSM_SIM_ID))) { 0353 setSimId(setting.value(QLatin1String(NM_SETTING_GSM_SIM_ID)).toString()); 0354 } 0355 0356 if (setting.contains(QLatin1String(NM_SETTING_GSM_SIM_OPERATOR_ID))) { 0357 setSimOperatorId(setting.value(QLatin1String(NM_SETTING_GSM_SIM_OPERATOR_ID)).toString()); 0358 } 0359 } 0360 0361 QVariantMap NetworkManager::GsmSetting::toMap() const 0362 { 0363 QVariantMap setting; 0364 0365 if (!number().isEmpty()) { 0366 setting.insert(QLatin1String(NM_SETTING_GSM_NUMBER), number()); 0367 } 0368 0369 if (!username().isEmpty()) { 0370 setting.insert(QLatin1String(NM_SETTING_GSM_USERNAME), username()); 0371 } 0372 0373 // Secrets 0374 if (!password().isEmpty()) { 0375 setting.insert(QLatin1String(NM_SETTING_GSM_PASSWORD), password()); 0376 } 0377 0378 setting.insert(QLatin1String(NM_SETTING_GSM_PASSWORD_FLAGS), (int)passwordFlags()); 0379 0380 if (!apn().isEmpty()) { 0381 setting.insert(QLatin1String(NM_SETTING_GSM_APN), apn()); 0382 } 0383 0384 if (!networkId().isEmpty()) { 0385 setting.insert(QLatin1String(NM_SETTING_GSM_NETWORK_ID), networkId()); 0386 } 0387 0388 if (networkType() != -1) { 0389 setting.insert(QLatin1String(NM_SETTING_GSM_NETWORK_TYPE), networkType()); 0390 } 0391 // Secrets 0392 if (!pin().isEmpty()) { 0393 setting.insert(QLatin1String(NM_SETTING_GSM_PIN), pin()); 0394 } 0395 0396 setting.insert(QLatin1String(NM_SETTING_GSM_PIN_FLAGS), (int)pinFlags()); 0397 0398 if (allowedBand() != 1) { 0399 setting.insert(QLatin1String(NM_SETTING_GSM_ALLOWED_BANDS), allowedBand()); 0400 } 0401 if (homeOnly()) { 0402 setting.insert(QLatin1String(NM_SETTING_GSM_HOME_ONLY), homeOnly()); 0403 } 0404 0405 if (!deviceId().isEmpty()) { 0406 setting.insert(QLatin1String(NM_SETTING_GSM_DEVICE_ID), deviceId()); 0407 } 0408 0409 if (!simId().isEmpty()) { 0410 setting.insert(QLatin1String(NM_SETTING_GSM_SIM_ID), simId()); 0411 } 0412 0413 if (!simOperatorId().isEmpty()) { 0414 setting.insert(QLatin1String(NM_SETTING_GSM_SIM_OPERATOR_ID), simOperatorId()); 0415 } 0416 0417 return setting; 0418 } 0419 0420 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::GsmSetting &setting) 0421 { 0422 dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n'; 0423 dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; 0424 0425 dbg.nospace() << NM_SETTING_GSM_NUMBER << ": " << setting.number() << '\n'; 0426 dbg.nospace() << NM_SETTING_GSM_USERNAME << ": " << setting.username() << '\n'; 0427 dbg.nospace() << NM_SETTING_GSM_PASSWORD << ": " << setting.password() << '\n'; 0428 dbg.nospace() << NM_SETTING_GSM_PASSWORD_FLAGS << ": " << setting.passwordFlags() << '\n'; 0429 dbg.nospace() << NM_SETTING_GSM_APN << ": " << setting.apn() << '\n'; 0430 dbg.nospace() << NM_SETTING_GSM_NETWORK_ID << ": " << setting.networkId() << '\n'; 0431 dbg.nospace() << NM_SETTING_GSM_NETWORK_TYPE << ": " << setting.networkType() << '\n'; 0432 dbg.nospace() << NM_SETTING_GSM_ALLOWED_BANDS << ": " << setting.allowedBand() << '\n'; 0433 dbg.nospace() << NM_SETTING_GSM_PIN << ": " << setting.pin() << '\n'; 0434 dbg.nospace() << NM_SETTING_GSM_PIN_FLAGS << ": " << setting.pinFlags() << '\n'; 0435 dbg.nospace() << NM_SETTING_GSM_HOME_ONLY << ": " << setting.homeOnly() << '\n'; 0436 dbg.nospace() << NM_SETTING_GSM_DEVICE_ID << ": " << setting.deviceId() << '\n'; 0437 dbg.nospace() << NM_SETTING_GSM_SIM_ID << ": " << setting.simId() << '\n'; 0438 dbg.nospace() << NM_SETTING_GSM_SIM_OPERATOR_ID << ": " << setting.simOperatorId() << '\n'; 0439 0440 return dbg.maybeSpace(); 0441 }