wpa_gui: Sort frequency and signal numerically in the scan results dialog
authorAdrian Nowicki <adinowicki@gmail.com>
Thu, 15 Jan 2015 16:53:38 +0000 (17:53 +0100)
committerJouni Malinen <j@w1.fi>
Thu, 22 Jan 2015 23:24:25 +0000 (01:24 +0200)
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 <adinowicki@gmail.com>
wpa_supplicant/wpa_gui-qt4/scanresults.cpp
wpa_supplicant/wpa_gui-qt4/scanresultsitem.cpp [new file with mode: 0644]
wpa_supplicant/wpa_gui-qt4/scanresultsitem.h [new file with mode: 0644]
wpa_supplicant/wpa_gui-qt4/wpa_gui.pro

index 063347e..ae0c240 100644 (file)
@@ -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 (file)
index 0000000..9cd937c
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * wpa_gui - ScanResultsItem class
+ * Copyright (c) 2015, Adrian Nowicki <adinowicki@gmail.com>
+ *
+ * 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 (file)
index 0000000..835b7c0
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * wpa_gui - ScanResultsItem class
+ * Copyright (c) 2015, Adrian Nowicki <adinowicki@gmail.com>
+ *
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
+ */
+
+#ifndef SCANRESULTSITEM_H
+#define SCANRESULTSITEM_H
+
+#include <QtGui>
+
+class ScanResultsItem : public QTreeWidgetItem
+{
+public:
+       ScanResultsItem(QTreeWidget *tree) : QTreeWidgetItem(tree) {}
+       bool operator< (const QTreeWidgetItem &other) const;
+};
+
+#endif /* SCANRESULTSITEM_H */
index 3c81929..69bc0f6 100644 (file)
@@ -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 \