From ad905e4a794f9beb6b7e2a5b24234f722033c9ea Mon Sep 17 00:00:00 2001 From: Adrian Nowicki Date: Thu, 15 Jan 2015 17:53:38 +0100 Subject: [PATCH] wpa_gui: Sort frequency and signal numerically in the scan results dialog Signal strength was sorted lexically rather than numerically, which put "-100 dBm" before "-50 dBm" if sorted in descending order. This change fixes that. It also treats frequency in the same manner, preparing it for the IEEE 802.11ah. Signed-off-by: Adrian Nowicki --- wpa_supplicant/wpa_gui-qt4/scanresults.cpp | 3 ++- .../wpa_gui-qt4/scanresultsitem.cpp | 18 ++++++++++++++++ wpa_supplicant/wpa_gui-qt4/scanresultsitem.h | 21 +++++++++++++++++++ wpa_supplicant/wpa_gui-qt4/wpa_gui.pro | 2 ++ 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 wpa_supplicant/wpa_gui-qt4/scanresultsitem.cpp create mode 100644 wpa_supplicant/wpa_gui-qt4/scanresultsitem.h diff --git a/wpa_supplicant/wpa_gui-qt4/scanresults.cpp b/wpa_supplicant/wpa_gui-qt4/scanresults.cpp index 063347e8a..ae0c24084 100644 --- a/wpa_supplicant/wpa_gui-qt4/scanresults.cpp +++ b/wpa_supplicant/wpa_gui-qt4/scanresults.cpp @@ -12,6 +12,7 @@ #include "signalbar.h" #include "wpagui.h" #include "networkconfig.h" +#include "scanresultsitem.h" ScanResults::ScanResults(QWidget *parent, const char *, bool, Qt::WFlags) @@ -95,7 +96,7 @@ void ScanResults::updateResults() ssid = (*it).mid(pos); } - QTreeWidgetItem *item = new QTreeWidgetItem(scanResultsWidget); + ScanResultsItem *item = new ScanResultsItem(scanResultsWidget); if (item) { item->setText(0, ssid); item->setText(1, bssid); diff --git a/wpa_supplicant/wpa_gui-qt4/scanresultsitem.cpp b/wpa_supplicant/wpa_gui-qt4/scanresultsitem.cpp new file mode 100644 index 000000000..9cd937cd6 --- /dev/null +++ b/wpa_supplicant/wpa_gui-qt4/scanresultsitem.cpp @@ -0,0 +1,18 @@ +/* + * wpa_gui - ScanResultsItem class + * Copyright (c) 2015, Adrian Nowicki + * + * This software may be distributed under the terms of the BSD license. + * See README for more details. + */ + +#include "scanresultsitem.h" + +bool ScanResultsItem::operator< (const QTreeWidgetItem &other) const +{ + int sortCol = treeWidget()->sortColumn(); + if (sortCol == 2 || sortCol == 3) { + return text(sortCol).toInt() < other.text(sortCol).toInt(); + } + return text(sortCol) < other.text(sortCol); +} diff --git a/wpa_supplicant/wpa_gui-qt4/scanresultsitem.h b/wpa_supplicant/wpa_gui-qt4/scanresultsitem.h new file mode 100644 index 000000000..835b7c08a --- /dev/null +++ b/wpa_supplicant/wpa_gui-qt4/scanresultsitem.h @@ -0,0 +1,21 @@ +/* + * wpa_gui - ScanResultsItem class + * Copyright (c) 2015, Adrian Nowicki + * + * This software may be distributed under the terms of the BSD license. + * See README for more details. + */ + +#ifndef SCANRESULTSITEM_H +#define SCANRESULTSITEM_H + +#include + +class ScanResultsItem : public QTreeWidgetItem +{ +public: + ScanResultsItem(QTreeWidget *tree) : QTreeWidgetItem(tree) {} + bool operator< (const QTreeWidgetItem &other) const; +}; + +#endif /* SCANRESULTSITEM_H */ diff --git a/wpa_supplicant/wpa_gui-qt4/wpa_gui.pro b/wpa_supplicant/wpa_gui-qt4/wpa_gui.pro index 3c81929e6..69bc0f672 100644 --- a/wpa_supplicant/wpa_gui-qt4/wpa_gui.pro +++ b/wpa_supplicant/wpa_gui-qt4/wpa_gui.pro @@ -34,6 +34,7 @@ HEADERS += wpamsg.h \ wpagui.h \ eventhistory.h \ scanresults.h \ + scanresultsitem.h \ signalbar.h \ userdatarequest.h \ networkconfig.h \ @@ -45,6 +46,7 @@ SOURCES += main.cpp \ wpagui.cpp \ eventhistory.cpp \ scanresults.cpp \ + scanresultsitem.cpp \ signalbar.cpp \ userdatarequest.cpp \ networkconfig.cpp \