| /* |
| * wpa_gui - ScanResults class |
| * Copyright (c) 2005-2006, Jouni Malinen <[email protected]> |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| * |
| * Alternatively, this software may be distributed under the terms of BSD |
| * license. |
| * |
| * See README and COPYING for more details. |
| */ |
| |
| #include <QTimer> |
| |
| #include <cstdio> |
| |
| #include "scanresults.h" |
| #include "wpagui.h" |
| #include "networkconfig.h" |
| |
| |
| ScanResults::ScanResults(QWidget *parent, const char *, bool, Qt::WFlags) |
| : QDialog(parent) |
| { |
| setupUi(this); |
| |
| connect(closeButton, SIGNAL(clicked()), this, SLOT(close())); |
| connect(scanButton, SIGNAL(clicked()), this, SLOT(scanRequest())); |
| connect(scanResultsView, SIGNAL(doubleClicked(Q3ListViewItem *)), this, |
| SLOT(bssSelected(Q3ListViewItem *))); |
| |
| wpagui = NULL; |
| } |
| |
| |
| ScanResults::~ScanResults() |
| { |
| delete timer; |
| } |
| |
| |
| void ScanResults::languageChange() |
| { |
| retranslateUi(this); |
| } |
| |
| |
| void ScanResults::setWpaGui(WpaGui *_wpagui) |
| { |
| wpagui = _wpagui; |
| updateResults(); |
| |
| timer = new QTimer(this); |
| connect(timer, SIGNAL(timeout()), SLOT(getResults())); |
| timer->start(10000, FALSE); |
| } |
| |
| |
| void ScanResults::updateResults() |
| { |
| char reply[8192]; |
| size_t reply_len; |
| |
| if (wpagui == NULL) |
| return; |
| |
| reply_len = sizeof(reply) - 1; |
| if (wpagui->ctrlRequest("SCAN_RESULTS", reply, &reply_len) < 0) |
| return; |
| reply[reply_len] = '\0'; |
| |
| scanResultsView->clear(); |
| |
| QString res(reply); |
| QStringList lines = QStringList::split(QChar('\n'), res); |
| bool first = true; |
| for (QStringList::Iterator it = lines.begin(); it != lines.end(); it++) |
| { |
| if (first) { |
| first = false; |
| continue; |
| } |
| |
| QStringList cols = QStringList::split(QChar('\t'), *it, true); |
| QString ssid, bssid, freq, signal, flags; |
| bssid = cols.count() > 0 ? cols[0] : ""; |
| freq = cols.count() > 1 ? cols[1] : ""; |
| signal = cols.count() > 2 ? cols[2] : ""; |
| flags = cols.count() > 3 ? cols[3] : ""; |
| ssid = cols.count() > 4 ? cols[4] : ""; |
| new Q3ListViewItem(scanResultsView, ssid, bssid, freq, signal, |
| flags); |
| } |
| } |
| |
| |
| void ScanResults::scanRequest() |
| { |
| char reply[10]; |
| size_t reply_len = sizeof(reply); |
| |
| if (wpagui == NULL) |
| return; |
| |
| wpagui->ctrlRequest("SCAN", reply, &reply_len); |
| } |
| |
| |
| void ScanResults::getResults() |
| { |
| updateResults(); |
| } |
| |
| |
| void ScanResults::bssSelected( Q3ListViewItem * sel ) |
| { |
| NetworkConfig *nc = new NetworkConfig(); |
| if (nc == NULL) |
| return; |
| nc->setWpaGui(wpagui); |
| nc->paramsFromScanResults(sel); |
| nc->show(); |
| nc->exec(); |
| } |