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 } }