QVariant EditorIdentityModel::data(const QModelIndex& index, int role) const { const QModelIndex sourceIndex = sourceModel()->index(index.row(), 0); const QString connectionName = sourceModel()->data(sourceIndex, NetworkModel::NameRole).toString(); const QString lastUsed = sourceModel()->data(sourceIndex, NetworkModel::LastUsedDateOnlyRole).toString(); const bool isActivated = (NetworkManager::ActiveConnection::State) sourceModel()->data(sourceIndex, NetworkModel::ConnectionStateRole).toInt() == NetworkManager::ActiveConnection::Activated; const bool isActivating = (NetworkManager::ActiveConnection::State) sourceModel()->data(sourceIndex, NetworkModel::ConnectionStateRole).toInt() == NetworkManager::ActiveConnection::Activating; NetworkManager::ConnectionSettings::ConnectionType type = static_cast<NetworkManager::ConnectionSettings::ConnectionType>(sourceModel()->data(sourceIndex, NetworkModel::TypeRole).toInt()); NetworkManager::ConnectionSettings::Ptr settings; NetworkManager::VpnSetting::Ptr vpnSetting ; if (type == NetworkManager::ConnectionSettings::Vpn) { settings = NetworkManager::findConnection(sourceModel()->data(sourceIndex, NetworkModel::ConnectionPathRole).toString())->settings(); if (settings) { vpnSetting = settings->setting(NetworkManager::Setting::Vpn).staticCast<NetworkManager::VpnSetting>(); } } QString tooltip; const QString iconName = UiUtils::iconAndTitleForConnectionSettingsType(type, tooltip); const int column = index.column(); if (role == Qt::DisplayRole) { switch (column) { case 0: if (type == NetworkManager::ConnectionSettings::Infiniband || type == NetworkManager::ConnectionSettings::Bond || type == NetworkManager::ConnectionSettings::Bridge || #if NM_CHECK_VERSION(0, 9, 10) type == NetworkManager::ConnectionSettings::Team || #endif type == NetworkManager::ConnectionSettings::Vlan) { return QString(connectionName + " (" + NetworkManager::ConnectionSettings::typeAsString(type) + ")"); } return connectionName; case 1: if (type == NetworkManager::ConnectionSettings::Vpn && vpnSetting) { return QString("%1 (%2)").arg(tooltip).arg(vpnSetting->serviceType().section('.', -1)); } return tooltip; case 2: return lastUsed; } } else if (role == Qt::DecorationRole) { if (column == 0) { return QIcon::fromTheme(iconName); } } else if (role == Qt::ToolTipRole) { if (column == 0) return tooltip; } else if (role == Qt::FontRole) { if (column == 0 && isActivated) { QFont f; f.setBold(true); return f; } else if (column == 0 && isActivating) { QFont f; f.setItalic(true); return f; } } else { return sourceModel()->data(index, role); } return QVariant(); }
void Handler::addAndActivateConnection(const QString& device, const QString& specificObject, const QString& password) { NetworkManager::AccessPoint::Ptr ap; NetworkManager::WirelessDevice::Ptr wifiDev; Q_FOREACH (const NetworkManager::Device::Ptr & dev, NetworkManager::networkInterfaces()) { if (dev->type() == NetworkManager::Device::Wifi) { wifiDev = dev.objectCast<NetworkManager::WirelessDevice>(); ap = wifiDev->findAccessPoint(specificObject); if (ap) { break; } } } if (!ap) { return; } NetworkManager::ConnectionSettings::Ptr settings = NetworkManager::ConnectionSettings::Ptr(new NetworkManager::ConnectionSettings(NetworkManager::ConnectionSettings::Wireless)); settings->setId(ap->ssid()); settings->setUuid(NetworkManager::ConnectionSettings::createNewUuid()); settings->setAutoconnect(true); #if 0 settings->addToPermissions(KUser().loginName(), QString()); #endif NetworkManager::WirelessSetting::Ptr wifiSetting = settings->setting(NetworkManager::Setting::Wireless).dynamicCast<NetworkManager::WirelessSetting>(); wifiSetting->setInitialized(true); wifiSetting = settings->setting(NetworkManager::Setting::Wireless).dynamicCast<NetworkManager::WirelessSetting>(); wifiSetting->setSsid(ap->ssid().toUtf8()); if (ap->mode() == NetworkManager::AccessPoint::Adhoc) { wifiSetting->setMode(NetworkManager::WirelessSetting::Adhoc); } NetworkManager::WirelessSecuritySetting::Ptr wifiSecurity = settings->setting(NetworkManager::Setting::WirelessSecurity).dynamicCast<NetworkManager::WirelessSecuritySetting>(); NetworkManager::WirelessSecurityType securityType = NetworkManager::findBestWirelessSecurity(wifiDev->wirelessCapabilities(), true, (ap->mode() == NetworkManager::AccessPoint::Adhoc), ap->capabilities(), ap->wpaFlags(), ap->rsnFlags()); if (securityType != NetworkManager::NoneSecurity) { wifiSecurity->setInitialized(true); wifiSetting->setSecurity("802-11-wireless-security"); } if (securityType == NetworkManager::Leap || securityType == NetworkManager::DynamicWep || securityType == NetworkManager::Wpa2Eap || securityType == NetworkManager::WpaEap) { if (securityType == NetworkManager::DynamicWep || securityType == NetworkManager::Leap) { wifiSecurity->setKeyMgmt(NetworkManager::WirelessSecuritySetting::Ieee8021x); if (securityType == NetworkManager::Leap) { wifiSecurity->setAuthAlg(NetworkManager::WirelessSecuritySetting::Leap); } } else { wifiSecurity->setKeyMgmt(NetworkManager::WirelessSecuritySetting::WpaEap); } m_tmpConnectionUuid = settings->uuid(); m_tmpDevicePath = device; m_tmpSpecificPath = specificObject; #if 0 QPointer<ConnectionDetailEditor> editor = new ConnectionDetailEditor(settings, true); editor->show(); KWindowSystem::setState(editor->winId(), NET::KeepAbove); KWindowSystem::forceActiveWindow(editor->winId()); connect(editor.data(), &ConnectionDetailEditor::accepted, [editor, this] () { addConnection(editor->setting()); }); connect(editor.data(), &ConnectionDetailEditor::finished, [editor] () { if (editor) { editor->deleteLater(); } }); editor->setModal(true); editor->show(); #endif } else { if (securityType == NetworkManager::StaticWep) { wifiSecurity->setKeyMgmt(NetworkManager::WirelessSecuritySetting::Wep); wifiSecurity->setWepKey0(password); #if 0 if (KWallet::Wallet::isEnabled()) { wifiSecurity->setWepKeyFlags(NetworkManager::Setting::AgentOwned); } #endif } else { if (ap->mode() == NetworkManager::AccessPoint::Adhoc) { wifiSecurity->setKeyMgmt(NetworkManager::WirelessSecuritySetting::WpaNone); } else { wifiSecurity->setKeyMgmt(NetworkManager::WirelessSecuritySetting::WpaPsk); } wifiSecurity->setPsk(password); #if 0 if (KWallet::Wallet::isEnabled()) { wifiSecurity->setPskFlags(NetworkManager::Setting::AgentOwned); } #endif } QDBusPendingReply<QDBusObjectPath> reply = NetworkManager::addAndActivateConnection(settings->toMap(), device, specificObject); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this); watcher->setProperty("action", Handler::AddAndActivateConnection); watcher->setProperty("connection", settings->name()); connect(watcher, &QDBusPendingCallWatcher::finished, this, &Handler::replyFinished); } settings.clear(); }
void NetworkManager::ConnectionSettingsPrivate::initSettings(const NetworkManager::ConnectionSettings::Ptr &connectionSettings) { Q_Q(ConnectionSettings); clearSettings(); switch (type) { case ConnectionSettings::Adsl: addSetting(connectionSettings->setting(Setting::Adsl)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::Bond: addSetting(connectionSettings->setting(Setting::Bond)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::Bluetooth: addSetting(connectionSettings->setting(Setting::Bluetooth)); addSetting(connectionSettings->setting(Setting::Ipv4)); if (NetworkManager::checkVersion(1, 0, 0)) { addSetting(connectionSettings->setting(Setting::Ipv6)); } if (q->setting(Setting::Gsm) && q->setting(Setting::Ppp) && q->setting(Setting::Serial)) { addSetting(connectionSettings->setting(Setting::Gsm)); addSetting(connectionSettings->setting(Setting::Ppp)); addSetting(connectionSettings->setting(Setting::Serial)); } break; case ConnectionSettings::Bridge: addSetting(connectionSettings->setting(Setting::Bridge)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::Cdma: addSetting(connectionSettings->setting(Setting::Cdma)); addSetting(connectionSettings->setting(Setting::Ipv4)); if (NetworkManager::checkVersion(1, 0, 0)) { addSetting(connectionSettings->setting(Setting::Ipv6)); } addSetting(connectionSettings->setting(Setting::Ppp)); break; case ConnectionSettings::Gsm: addSetting(connectionSettings->setting(Setting::Gsm)); addSetting(connectionSettings->setting(Setting::Ipv4)); if (NetworkManager::checkVersion(1, 0, 0)) { addSetting(connectionSettings->setting(Setting::Ipv6)); } addSetting(connectionSettings->setting(Setting::Ppp)); break; case ConnectionSettings::Infiniband: addSetting(connectionSettings->setting(Setting::Infiniband)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::OLPCMesh: addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); addSetting(connectionSettings->setting(Setting::OlpcMesh)); break; case ConnectionSettings::Pppoe: addSetting(connectionSettings->setting(Setting::Ipv4)); //addSetting(Ipv6Setting(connectionSettings->setting(Setting::Ipv6)); addSetting(connectionSettings->setting(Setting::Ppp)); addSetting(connectionSettings->setting(Setting::Pppoe)); addSetting(connectionSettings->setting(Setting::Wired)); break; case ConnectionSettings::Vlan: addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); addSetting(connectionSettings->setting(Setting::Vlan)); break; case ConnectionSettings::Vpn: addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); addSetting(connectionSettings->setting(Setting::Vpn)); break; case ConnectionSettings::Wimax: addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); addSetting(connectionSettings->setting(Setting::Wimax)); break; case ConnectionSettings::Wired: addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); addSetting(connectionSettings->setting(Setting::Security8021x)); addSetting(connectionSettings->setting(Setting::Wired)); break; case ConnectionSettings::Wireless: addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); addSetting(connectionSettings->setting(Setting::Security8021x)); addSetting(connectionSettings->setting(Setting::Wireless)); addSetting(connectionSettings->setting(Setting::WirelessSecurity)); break; case ConnectionSettings::Team: addSetting(connectionSettings->setting(Setting::Team)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::Generic: addSetting(connectionSettings->setting(Setting::Generic)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::Tun: addSetting(connectionSettings->setting(Setting::Tun)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::Unknown: default: break; } }