void GsmWidget::loadConfig(const NetworkManager::Setting::Ptr &setting) { NetworkManager::GsmSetting::Ptr gsmSetting = setting.staticCast<NetworkManager::GsmSetting>(); const QString number = gsmSetting->number(); if (!number.isEmpty()) m_ui->number->setText(number); m_ui->username->setText(gsmSetting->username()); if (gsmSetting->passwordFlags().testFlag(NetworkManager::Setting::None)) { m_ui->password->setPasswordOption(PasswordField::StoreForAllUsers); } else if (gsmSetting->passwordFlags().testFlag(NetworkManager::Setting::AgentOwned)) { m_ui->password->setPasswordOption(PasswordField::StoreForUser); } else if (gsmSetting->passwordFlags().testFlag(NetworkManager::Setting::NotSaved)) { m_ui->password->setPasswordOption(PasswordField::AlwaysAsk); } else { m_ui->password->setPasswordOption(PasswordField::NotRequired); } m_ui->apn->setText(gsmSetting->apn()); m_ui->networkId->setText(gsmSetting->networkId()); if (gsmSetting->networkType() != NetworkManager::GsmSetting::Any) m_ui->type->setCurrentIndex(m_ui->type->findData(static_cast<int>(gsmSetting->networkType()))); m_ui->roaming->setChecked(!gsmSetting->homeOnly()); if (gsmSetting->pinFlags().testFlag(NetworkManager::Setting::None)) { m_ui->pin->setPasswordOption(PasswordField::StoreForAllUsers); } else if (gsmSetting->pinFlags().testFlag(NetworkManager::Setting::AgentOwned)) { m_ui->pin->setPasswordOption(PasswordField::StoreForUser); } else if (gsmSetting->pinFlags().testFlag(NetworkManager::Setting::NotSaved)) { m_ui->pin->setPasswordOption(PasswordField::AlwaysAsk); } else { m_ui->pin->setPasswordOption(PasswordField::NotRequired); } loadSecrets(setting); }
void Handler::activateConnection(const QString& connection, const QString& device, const QString& specificObject) { NetworkManager::Connection::Ptr con = NetworkManager::findConnection(connection); if (!con) { qCWarning(NM) << "Not possible to activate this connection"; return; } if (con->settings()->connectionType() == NetworkManager::ConnectionSettings::Vpn) { NetworkManager::VpnSetting::Ptr vpnSetting = con->settings()->setting(NetworkManager::Setting::Vpn).staticCast<NetworkManager::VpnSetting>(); if (vpnSetting) { // qCDebug(NM) << "Checking VPN" << con->name() << "type:" << vpnSetting->serviceType(); #if 0 // get the list of supported VPN service types const KService::List services = KServiceTypeTrader::self()->query("PlasmaNetworkManagement/VpnUiPlugin", QString::fromLatin1("[X-NetworkManager-Services]=='%1'").arg(vpnSetting->serviceType())); if (services.isEmpty()) { qCWarning(NM) << "VPN" << vpnSetting->serviceType() << "not found, skipping"; KNotification *notification = new KNotification("MissingVpnPlugin", KNotification::CloseOnTimeout, this); notification->setComponentName("networkmanagement"); notification->setTitle(con->name()); notification->setText(i18n("Missing VPN plugin")); notification->setPixmap(QIcon::fromTheme("dialog-warning").pixmap(KIconLoader::SizeHuge)); notification->sendEvent(); return; } #endif } } #if WITH_MODEMMANAGER_SUPPORT if (con->settings()->connectionType() == NetworkManager::ConnectionSettings::Gsm) { NetworkManager::ModemDevice::Ptr nmModemDevice = NetworkManager::findNetworkInterface(device).objectCast<NetworkManager::ModemDevice>(); if (nmModemDevice) { ModemManager::ModemDevice::Ptr mmModemDevice = ModemManager::findModemDevice(nmModemDevice->udi()); if (mmModemDevice) { ModemManager::Modem::Ptr modem = mmModemDevice->interface(ModemManager::ModemDevice::ModemInterface).objectCast<ModemManager::Modem>(); NetworkManager::GsmSetting::Ptr gsmSetting = con->settings()->setting(NetworkManager::Setting::Gsm).staticCast<NetworkManager::GsmSetting>(); if (gsmSetting && gsmSetting->pinFlags() == NetworkManager::Setting::NotSaved && modem && modem->unlockRequired() > MM_MODEM_LOCK_NONE) { QDBusInterface managerIface("org.kde.plasmanetworkmanagement", "/org/kde/plasmanetworkmanagement", "org.kde.plasmanetworkmanagement", QDBusConnection::sessionBus(), this); managerIface.call("unlockModem", mmModemDevice->uni()); connect(modem.data(), &ModemManager::Modem::unlockRequiredChanged, this, &Handler::unlockRequiredChanged); m_tmpConnectionPath = connection; m_tmpDevicePath = device; m_tmpSpecificPath = specificObject; return; } } } } #endif QDBusPendingReply<QDBusObjectPath> reply = NetworkManager::activateConnection(connection, device, specificObject); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this); watcher->setProperty("action", Handler::ActivateConnection); watcher->setProperty("connection", con->name()); connect(watcher, &QDBusPendingCallWatcher::finished, this, &Handler::replyFinished); }