From 2e12f36fa5b62ae14892ba6e97ccc1e6f42ae5de Mon Sep 17 00:00:00 2001 From: Giovanny Rodriguez Date: Thu, 2 Apr 2026 18:49:28 -0500 Subject: [PATCH] Add sort by Wi-Fi Standard option to AccessPoints view Add STANDARD as a new SortBy option that orders access points by Wi-Fi standard descending (BE > AX > AC > N > LEGACY > UNKNOWN), with signal strength, SSID and BSSID as tiebreakers. - SortBy.kt: add sortByStandard() comparator and STANDARD enum entry - arrays.xml: add Standard option to sort_by_index_array and sort_by_array - strings.xml: add sort_by_standard string resource - SortByTest.kt: update size, ordinal and comparator assertions --- .../kotlin/com/vrem/wifianalyzer/wifi/model/SortBy.kt | 7 +++++++ app/src/main/res/values/arrays.xml | 6 ++++-- app/src/main/res/values/strings.xml | 1 + .../com/vrem/wifianalyzer/wifi/model/SortByTest.kt | 9 +++++++-- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/vrem/wifianalyzer/wifi/model/SortBy.kt b/app/src/main/kotlin/com/vrem/wifianalyzer/wifi/model/SortBy.kt index 3a1c6a7cd..555362ae6 100644 --- a/app/src/main/kotlin/com/vrem/wifianalyzer/wifi/model/SortBy.kt +++ b/app/src/main/kotlin/com/vrem/wifianalyzer/wifi/model/SortBy.kt @@ -36,10 +36,17 @@ fun sortByChannel(): Comparator = fun sortByDefault(): Comparator = compareBy { it.wiFiIdentifier.ssid }.thenBy { it.wiFiIdentifier.bssid } +fun sortByStandard(): Comparator = + compareByDescending { it.wiFiSignal.extra.wiFiStandard.wiFiStandardId } + .thenByDescending { it.wiFiSignal.level } + .thenBy { it.wiFiIdentifier.ssid } + .thenBy { it.wiFiIdentifier.bssid } + enum class SortBy( val sort: Comparator, ) { STRENGTH(sortByStrength()), SSID(sortBySSID()), CHANNEL(sortByChannel()), + STANDARD(sortByStandard()), } diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 0a8fff62e..5707766ef 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -35,13 +35,15 @@ 0 1 - 2 + 2 + 3 @string/sort_by_signal_strength @string/sort_by_ssid - @string/sort_by_channel + @string/sort_by_channel + @string/sort_by_standard diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6eb646fad..773668611 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -171,6 +171,7 @@ "WPS" "selected_menu" "Channel" + "Standard" "0" "sort_by" "Signal Strength" diff --git a/app/src/test/kotlin/com/vrem/wifianalyzer/wifi/model/SortByTest.kt b/app/src/test/kotlin/com/vrem/wifianalyzer/wifi/model/SortByTest.kt index 40b58b1ac..4bbb7f380 100644 --- a/app/src/test/kotlin/com/vrem/wifianalyzer/wifi/model/SortByTest.kt +++ b/app/src/test/kotlin/com/vrem/wifianalyzer/wifi/model/SortByTest.kt @@ -24,8 +24,8 @@ class SortByTest { @Test fun sortBy() { assertThat(SortBy.entries) - .hasSize(3) - .containsExactly(SortBy.STRENGTH, SortBy.SSID, SortBy.CHANNEL) + .hasSize(4) + .containsExactly(SortBy.STRENGTH, SortBy.SSID, SortBy.CHANNEL, SortBy.STANDARD) } @Test @@ -33,6 +33,7 @@ class SortByTest { assertThat(SortBy.STRENGTH.ordinal).isEqualTo(0) assertThat(SortBy.SSID.ordinal).isEqualTo(1) assertThat(SortBy.CHANNEL.ordinal).isEqualTo(2) + assertThat(SortBy.STANDARD.ordinal).isEqualTo(3) } @Test @@ -49,5 +50,9 @@ class SortByTest { SortBy.CHANNEL.sort.javaClass .isInstance(sortByChannel()), ).isTrue + assertThat( + SortBy.STANDARD.sort.javaClass + .isInstance(sortByStandard()), + ).isTrue } }