[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [plasma-nm] libs/editor: Autodetect wireless security in the connection editor once SSID is selected
From: Jan Grulich <jgrulich () redhat ! com>
Date: 2015-12-17 15:10:54
Message-ID: E1a9aCk-0004VW-2w () scm ! kde ! org
[Download RAW message or body]
Git commit e3927a3ea25c6b576600d5caf3aa54586ba7e3f0 by Jan Grulich.
Committed on 17/12/2015 at 15:10.
Pushed by grulich into branch 'master'.
Autodetect wireless security in the connection editor once SSID is selected/written
M +1 -0 libs/editor/connectiondetaileditor.cpp
M +6 -2 libs/editor/settings/wificonnectionwidget.cpp
M +3 -0 libs/editor/settings/wificonnectionwidget.h
M +51 -0 libs/editor/settings/wifisecurity.cpp
M +3 -0 libs/editor/settings/wifisecurity.h
M +11 -16 libs/editor/widgets/ssidcombobox.cpp
M +1 -2 libs/editor/widgets/ssidcombobox.h
http://commits.kde.org/plasma-nm/e3927a3ea25c6b576600d5caf3aa54586ba7e3f0
diff --git a/libs/editor/connectiondetaileditor.cpp \
b/libs/editor/connectiondetaileditor.cpp index 7370bbb..5d3f862 100644
--- a/libs/editor/connectiondetaileditor.cpp
+++ b/libs/editor/connectiondetaileditor.cpp
@@ -230,6 +230,7 @@ void ConnectionDetailEditor::initTabs()
\
m_connection->setting(NetworkManager::Setting::Security8021x).staticCast<NetworkManager::Security8021xSetting>(),
this);
m_ui->tabWidget->addTab(wifiSecurity, i18n("Wi-Fi Security"));
+ connect(wifiWidget, static_cast<void (WifiConnectionWidget::*)(const QString \
&)>(&WifiConnectionWidget::ssidChanged), wifiSecurity, \
&WifiSecurity::onSsidChanged);
} else if (type == NetworkManager::ConnectionSettings::Pppoe) { // DSL
PppoeWidget * pppoeWidget = new \
PppoeWidget(m_connection->setting(NetworkManager::Setting::Pppoe), this); \
m_ui->tabWidget->addTab(pppoeWidget, i18n("DSL"));
diff --git a/libs/editor/settings/wificonnectionwidget.cpp \
b/libs/editor/settings/wificonnectionwidget.cpp index a36b661..18e1a2e 100644
--- a/libs/editor/settings/wificonnectionwidget.cpp
+++ b/libs/editor/settings/wificonnectionwidget.cpp
@@ -36,7 +36,7 @@ WifiConnectionWidget::WifiConnectionWidget(const \
NetworkManager::Setting::Ptr &s m_ui->setupUi(this);
connect(m_ui->btnRandomMacAddr, &QPushButton::clicked, this, \
&WifiConnectionWidget::generateRandomClonedMac);
- connect(m_ui->SSIDCombo, &SsidComboBox::ssidChanged, this, \
&WifiConnectionWidget::ssidChanged); + connect(m_ui->SSIDCombo, \
&SsidComboBox::ssidChanged, this, static_cast<void \
(WifiConnectionWidget::*)()>(&WifiConnectionWidget::ssidChanged));
connect(m_ui->modeComboBox, static_cast<void \
(KComboBox::*)(int)>(&KComboBox::currentIndexChanged), this, \
&WifiConnectionWidget::modeChanged);
connect(m_ui->band, static_cast<void \
(KComboBox::*)(int)>(&KComboBox::currentIndexChanged), this, \
&WifiConnectionWidget::bandChanged);
@@ -46,8 +46,9 @@ WifiConnectionWidget::WifiConnectionWidget(const \
NetworkManager::Setting::Ptr &s
KAcceleratorManager::manage(this);
- if (setting)
+ if (setting) {
loadConfig(setting);
+ }
}
WifiConnectionWidget::~WifiConnectionWidget()
@@ -138,6 +139,9 @@ void WifiConnectionWidget::ssidChanged()
{
m_ui->BSSIDCombo->init(m_ui->BSSIDCombo->bssid(), m_ui->SSIDCombo->ssid());
slotWidgetChanged();
+
+ // Emit that SSID has changed so we can pre-configure wireless security
+ Q_EMIT ssidChanged(m_ui->SSIDCombo->ssid());
}
void WifiConnectionWidget::modeChanged(int mode)
diff --git a/libs/editor/settings/wificonnectionwidget.h \
b/libs/editor/settings/wificonnectionwidget.h index a111b7a..f64d0b5 100644
--- a/libs/editor/settings/wificonnectionwidget.h
+++ b/libs/editor/settings/wificonnectionwidget.h
@@ -46,6 +46,9 @@ public:
virtual bool isValid() const Q_DECL_OVERRIDE;
+Q_SIGNALS:
+ void ssidChanged(const QString &ssid);
+
private Q_SLOTS:
void generateRandomClonedMac();
void ssidChanged();
diff --git a/libs/editor/settings/wifisecurity.cpp \
b/libs/editor/settings/wifisecurity.cpp index a6c252e..fc607eb 100644
--- a/libs/editor/settings/wifisecurity.cpp
+++ b/libs/editor/settings/wifisecurity.cpp
@@ -21,6 +21,9 @@
#include "wifisecurity.h"
#include "ui_wifisecurity.h"
+#include <NetworkManagerQt/Device>
+#include <NetworkManagerQt/Manager>
+#include <NetworkManagerQt/WirelessDevice>
#include <NetworkManagerQt/Utils>
WifiSecurity::WifiSecurity(const NetworkManager::Setting::Ptr &setting, const \
NetworkManager::Security8021xSetting::Ptr &setting8021x, @@ -299,6 +302,54 @@ \
QVariantMap WifiSecurity::setting8021x() const return QVariantMap();
}
+void WifiSecurity::onSsidChanged(const QString &ssid)
+{
+ Q_FOREACH (const NetworkManager::Device::Ptr &device, \
NetworkManager::networkInterfaces()) { + if (device->type() == \
NetworkManager::Device::Wifi) { + NetworkManager::WirelessDevice::Ptr \
wifiDevice = device.staticCast<NetworkManager::WirelessDevice>(); + if \
(wifiDevice) { + Q_FOREACH (const NetworkManager::WirelessNetwork::Ptr \
wifiNetwork, wifiDevice->networks()) { + if (wifiNetwork && \
wifiNetwork->ssid() == ssid) { + \
NetworkManager::AccessPoint::Ptr ap = wifiNetwork->referenceAccessPoint(); + \
NetworkManager::WirelessSecurityType securityType = \
NetworkManager::findBestWirelessSecurity(wifiDevice->wirelessCapabilities(), true, \
(wifiDevice->mode() == NetworkManager::WirelessDevice::Adhoc), + \
ap->capabilities(), ap->wpaFlags(), ap->rsnFlags()); + switch \
(securityType) { + case \
NetworkManager::WirelessSecurityType::StaticWep: + \
m_ui->securityCombo->setCurrentIndex(WepHex); + break;
+ case NetworkManager::WirelessSecurityType::DynamicWep:
+ m_ui->securityCombo->setCurrentIndex(DynamicWep);
+ break;
+ case NetworkManager::WirelessSecurityType::Leap:
+ m_ui->securityCombo->setCurrentIndex(Leap);
+ break;
+ case NetworkManager::WirelessSecurityType::WpaPsk:
+ m_ui->securityCombo->setCurrentIndex(WpaPsk);
+ break;
+ case NetworkManager::WirelessSecurityType::Wpa2Psk:
+ m_ui->securityCombo->setCurrentIndex(WpaPsk);
+ break;
+ case NetworkManager::WirelessSecurityType::WpaEap:
+ m_ui->securityCombo->setCurrentIndex(WpaEap);
+ break;
+ case NetworkManager::WirelessSecurityType::Wpa2Eap:
+ m_ui->securityCombo->setCurrentIndex(WpaEap);
+ break;
+ default:
+ m_ui->securityCombo->setCurrentIndex(None);
+ }
+
+ return;
+ }
+ }
+ }
+ }
+ }
+
+ // Reset to none security if we don't find any AP or Wifi device
+ m_ui->securityCombo->setCurrentIndex(None);
+}
+
void WifiSecurity::setWepKey(int keyIndex)
{
if (keyIndex == 0) {
diff --git a/libs/editor/settings/wifisecurity.h \
b/libs/editor/settings/wifisecurity.h index 2bef9c5..77d8c88 100644
--- a/libs/editor/settings/wifisecurity.h
+++ b/libs/editor/settings/wifisecurity.h
@@ -57,6 +57,9 @@ public:
virtual bool isValid() const Q_DECL_OVERRIDE;
+public Q_SLOTS:
+ void onSsidChanged(const QString &ssid);
+
private Q_SLOTS:
void securityChanged(int index);
void setWepKey(int keyIndex);
diff --git a/libs/editor/widgets/ssidcombobox.cpp \
b/libs/editor/widgets/ssidcombobox.cpp index 472384f..c1c501a 100644
--- a/libs/editor/widgets/ssidcombobox.cpp
+++ b/libs/editor/widgets/ssidcombobox.cpp
@@ -33,7 +33,7 @@ bool signalCompare(const NetworkManager::WirelessNetwork::Ptr & \
one, const Netwo }
SsidComboBox::SsidComboBox(QWidget *parent) :
- KComboBox(parent), m_dirty(false)
+ KComboBox(parent)
{
setEditable(true);
setInsertPolicy(QComboBox::NoInsert);
@@ -44,28 +44,23 @@ SsidComboBox::SsidComboBox(QWidget *parent) :
QString SsidComboBox::ssid() const
{
- QString result;
- if (!m_dirty)
- result = itemData(currentIndex()).toString();
- else
- result = currentText();
-
- // qCDebug(PLASMA_NM) << "Result:" << currentIndex() << result;
-
- return result;
+ if (currentIndex() == 0 || currentText() != itemData(currentIndex()).toString()) \
{ + return currentText();
+ } else {
+ return itemData(currentIndex()).toString();
+ }
}
-void SsidComboBox::slotEditTextChanged(const QString &)
+void SsidComboBox::slotEditTextChanged(const QString &text)
{
- m_dirty = true;
- Q_EMIT ssidChanged();
+ if (!text.contains(QLatin1String("Security:")) && \
!text.contains(QLatin1String("Frequency:"))) { + Q_EMIT ssidChanged();
+ }
}
void SsidComboBox::slotCurrentIndexChanged(int)
{
- m_dirty = false;
- setEditText(ssid());
- Q_EMIT ssidChanged();
+ setEditText(itemData(currentIndex()).toString());
}
void SsidComboBox::init(const QString &ssid)
diff --git a/libs/editor/widgets/ssidcombobox.h b/libs/editor/widgets/ssidcombobox.h
index 3e367e7..056a139 100644
--- a/libs/editor/widgets/ssidcombobox.h
+++ b/libs/editor/widgets/ssidcombobox.h
@@ -40,13 +40,12 @@ Q_SIGNALS:
void ssidChanged();
private Q_SLOTS:
- void slotEditTextChanged(const QString &);
+ void slotEditTextChanged(const QString &text);
void slotCurrentIndexChanged(int);
private:
void addSsidsToCombo(const QList<NetworkManager::WirelessNetwork::Ptr> \
&networks); QString m_initialSsid;
- bool m_dirty;
};
#endif // PLASMA_NM_SSIDCOMBOBOX_H
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic