summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2019-11-18 20:15:29 -0600
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2019-11-18 20:15:29 -0600
commit930e2002872d40b93b6a4f0b3e2e7ccd91b50274 (patch)
tree3a3d379b699515962e2b720748b3d0ead879473c
parent6e1ae4ba0f9e4ee93dd3b827f0d4c9f1eafde5ad (diff)
downloadhorizon-930e2002872d40b93b6a4f0b3e2e7ccd91b50274.tar.gz
horizon-930e2002872d40b93b6a4f0b3e2e7ccd91b50274.tar.bz2
horizon-930e2002872d40b93b6a4f0b3e2e7ccd91b50274.tar.xz
horizon-930e2002872d40b93b6a4f0b3e2e7ccd91b50274.zip
Qt UI: Wire up wireless network list to do something
-rw-r--r--ui/qt5/netsimplewifipage.cc60
-rw-r--r--ui/qt5/netsimplewifipage.hh1
2 files changed, 57 insertions, 4 deletions
diff --git a/ui/qt5/netsimplewifipage.cc b/ui/qt5/netsimplewifipage.cc
index 7ca866c..ee0f31a 100644
--- a/ui/qt5/netsimplewifipage.cc
+++ b/ui/qt5/netsimplewifipage.cc
@@ -37,6 +37,8 @@ NetworkSimpleWirelessPage::NetworkSimpleWirelessPage(QWidget *parent)
connect(rescanButton, &QPushButton::clicked, [=](void) { doScan(); });
ssidListView = new QListWidget;
+ connect(ssidListView, &QListWidget::currentItemChanged,
+ this, &NetworkSimpleWirelessPage::networkChosen);
#ifdef HAS_INSTALL_ENV
exchange_item.filter = "CTRL-EVENT-SCAN-RESULTS";
@@ -45,8 +47,9 @@ NetworkSimpleWirelessPage::NetworkSimpleWirelessPage(QWidget *parent)
#endif /* HAS_INSTALL_ENV */
passphrase = new QLineEdit(this);
+ connect(passphrase, &QLineEdit::textChanged,
+ this, &NetworkSimpleWirelessPage::completeChanged);
passphrase->setEchoMode(QLineEdit::Password);
- passphrase->setPlaceholderText(tr("Passphrase"));
passphrase->hide();
layout = new QVBoxLayout;
@@ -70,6 +73,49 @@ void NetworkSimpleWirelessPage::scanDone(QString message) {
statusLabel->setText(message);
}
+void NetworkSimpleWirelessPage::networkChosen(QListWidgetItem *current,
+ QListWidgetItem *) {
+ emit completeChanged();
+ passphrase->clear();
+
+ if(current == nullptr) {
+ passphrase->hide();
+ return;
+ }
+
+ QStringList flags = current->data(Qt::UserRole).toStringList();
+ if(flags.length() == 0) {
+ passphrase->hide();
+ return;
+ }
+
+ for(auto &flag : flags) {
+ if(flag.startsWith("WPA-EAP") || flag.startsWith("WPA2-EAP")) {
+ passphrase->setEnabled(false);
+ passphrase->setPlaceholderText(tr("WPA Enterprise networks are not supported in this release of Horizon."));
+ passphrase->show();
+ return;
+ }
+
+ if(flag.startsWith("WPA-PSK") || flag.startsWith("WPA2-PSK")) {
+ passphrase->setEnabled(true);
+ passphrase->setPlaceholderText(tr("WPA Passphrase"));
+ passphrase->show();
+ return;
+ }
+
+ if(flag.startsWith("WEP")) {
+ passphrase->setEnabled(true);
+ passphrase->setPlaceholderText(tr("WEP Passphrase"));
+ passphrase->show();
+ return;
+ }
+ }
+
+ passphrase->hide();
+ return;
+}
+
void NetworkSimpleWirelessPage::doScan() {
#ifdef HAS_INSTALL_ENV
ssidListView->clear();
@@ -82,6 +128,7 @@ void NetworkSimpleWirelessPage::doScan() {
horizonWizard()->chosen_auto_iface;
tain_now_g();
+ wpactrl_end(&control);
if(!wpactrl_start_g(&control, suppsock.c_str(), 2000)) {
rescanButton->setEnabled(false);
statusLabel->setText(tr("Couldn't communicate with wireless subsystem (Code %1)").arg(errno));
@@ -131,7 +178,7 @@ void NetworkSimpleWirelessPage::doScan() {
/* Not finished yet, so don't do anything. */
return;
} else {
- status = tr("Select your network from the list.");
+ status = tr("Select your wireless network.");
}
}
}
@@ -151,7 +198,11 @@ void NetworkSimpleWirelessPage::initializePage() {
}
bool NetworkSimpleWirelessPage::isComplete() const {
- return (ssidListView->currentRow() != -1);
+ if(ssidListView->currentRow() != -1) {
+ return false;
+ }
+
+ return (passphrase->isHidden() || passphrase->text().size() > 0);
}
int NetworkSimpleWirelessPage::nextId() const {
@@ -217,7 +268,8 @@ int NetworkSimpleWirelessPage::processScan(wpactrl_t *c, const char *, size_t) {
.arg(network.frequency)
.arg(fromMacAddress(network.bssid))
.arg(network.signal_level));
- netitem->setData(Qt::UserRole, QString::fromStdString(flags));
+ netitem->setData(Qt::UserRole, QString::fromStdString(flags)
+ .split("\0"));
netitem->setData(Qt::UserRole + 1, network.signal_level);
netitems.push_back(netitem);
}
diff --git a/ui/qt5/netsimplewifipage.hh b/ui/qt5/netsimplewifipage.hh
index ab5187b..33c716d 100644
--- a/ui/qt5/netsimplewifipage.hh
+++ b/ui/qt5/netsimplewifipage.hh
@@ -43,6 +43,7 @@ private:
QLineEdit *passphrase;
void doScan();
+ void networkChosen(QListWidgetItem*, QListWidgetItem*);
void scanDone(QString message);
#ifdef HAS_INSTALL_ENV