From 6e1ae4ba0f9e4ee93dd3b827f0d4c9f1eafde5ad Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Mon, 18 Nov 2019 16:15:11 -0600 Subject: Qt UI: Sort wireless network list by signal strength --- ui/qt5/netsimplewifipage.cc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'ui') diff --git a/ui/qt5/netsimplewifipage.cc b/ui/qt5/netsimplewifipage.cc index bec143c..7ca866c 100644 --- a/ui/qt5/netsimplewifipage.cc +++ b/ui/qt5/netsimplewifipage.cc @@ -161,6 +161,7 @@ int NetworkSimpleWirelessPage::nextId() const { #ifdef HAS_INSTALL_ENV int NetworkSimpleWirelessPage::processScan(wpactrl_t *c, const char *, size_t) { assert(c == &control); + std::vector netitems; stralloc buf = STRALLOC_ZERO; @@ -209,7 +210,7 @@ int NetworkSimpleWirelessPage::processScan(wpactrl_t *c, const char *, size_t) { icon = QIcon::fromTheme("network-wireless-signal-excellent"); } - QListWidgetItem *netitem = new QListWidgetItem(ssidListView); + QListWidgetItem *netitem = new QListWidgetItem; netitem->setText(QString::fromStdString(ssid)); netitem->setIcon(icon); netitem->setToolTip(tr("Frequency: %1 MHz\nBSSID: %2\nRSSI: %3") @@ -217,6 +218,18 @@ int NetworkSimpleWirelessPage::processScan(wpactrl_t *c, const char *, size_t) { .arg(fromMacAddress(network.bssid)) .arg(network.signal_level)); netitem->setData(Qt::UserRole, QString::fromStdString(flags)); + netitem->setData(Qt::UserRole + 1, network.signal_level); + netitems.push_back(netitem); + } + + std::sort(netitems.begin(), netitems.end(), + [](QListWidgetItem *left, QListWidgetItem *right) { + return left->data(Qt::UserRole + 1).toInt() < + right->data(Qt::UserRole + 1).toInt(); + }); + + for(auto &item : netitems) { + ssidListView->addItem(item); } return 1; -- cgit v1.2.3-60-g2f50