@@ -3,6 +3,7 @@ package tk.superl2.xwifi
3
3
import android.Manifest
4
4
import android.app.AlertDialog
5
5
import android.content.Intent
6
+ import android.content.SharedPreferences
6
7
import android.content.pm.PackageManager
7
8
import android.os.AsyncTask
8
9
import android.os.Build
@@ -34,21 +35,25 @@ class MainActivity: AppCompatActivity() {
34
35
private val wifiEntrySSIDs = ArrayList <String >()
35
36
private lateinit var loadWifiEntriesInBackgroundTask: LoadWifiEntriesInBackground
36
37
private lateinit var qrDialog: AlertDialog
38
+ private lateinit var prefs: SharedPreferences
37
39
38
- fun sortWifiEntries (ascending : Boolean = true, updateListView : Boolean = false) {
39
- if (ascending) {
40
- wifiEntries.sortBy { it.title }
41
- wifiEntrySSIDs.sort()
42
- } else {
43
- wifiEntries.sortByDescending { it.title }
44
- wifiEntrySSIDs.sortDescending()
40
+ fun sortWifiEntries (updateListView : Boolean ) {
41
+ when (prefs.getString(" sorting" , " alphabetical" )) {
42
+ " alphabetical" -> {
43
+ wifiEntries.sortWith(compareBy(String .CASE_INSENSITIVE_ORDER , { it.title }))
44
+ if (! prefs.getBoolean(" sorting_order" , DEFAULT_SORTING_ORDER )) wifiEntries.reverse()
45
+ }
46
+ }
47
+ if (updateListView) {
48
+ wifiEntrySSIDs.clear()
49
+ wifiEntries.mapTo(wifiEntrySSIDs) { it.title }
50
+ (wifi_ListView.adapter as ArrayAdapter <* >).notifyDataSetChanged()
45
51
}
46
- if (updateListView) (wifi_ListView.adapter as ArrayAdapter <* >).notifyDataSetChanged()
47
52
}
48
53
49
54
override fun onCreate (savedInstanceState : Bundle ? ) {
50
55
PreferenceManager .setDefaultValues(this , R .xml.preferences, false )
51
- val prefs = PreferenceManager .getDefaultSharedPreferences(this )
56
+ prefs = PreferenceManager .getDefaultSharedPreferences(this )
52
57
53
58
setThemeFromSharedPrefs(prefs)
54
59
super .onCreate(savedInstanceState)
@@ -146,7 +151,9 @@ class MainActivity: AppCompatActivity() {
146
151
147
152
override fun doInBackground (vararg params : Unit? ) {
148
153
loadWifiEntries()
149
- sortWifiEntries(ascending = true )
154
+ sortWifiEntries(false )
155
+ wifiEntrySSIDs.clear()
156
+ wifiEntries.mapTo(wifiEntrySSIDs) { it.title }
150
157
}
151
158
152
159
override fun onPostExecute (result : Unit? ) {
@@ -158,10 +165,8 @@ class MainActivity: AppCompatActivity() {
158
165
private fun loadWifiEntries () {
159
166
Log .v(TAG , " Loading wifi entries..." )
160
167
wifiEntries.clear()
161
- wifiEntrySSIDs.clear()
162
168
try {
163
169
wifiEntries.addAll(if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .O ) readOreoFile() else readNonOreoFile())
164
- wifiEntries.mapTo(wifiEntrySSIDs) { it.title }
165
170
Log .v(TAG , " Wifi entries loaded." )
166
171
} catch (e: WifiUnparseableException ) {
167
172
if (! ::errorDialogBuilder.isInitialized) {
@@ -200,12 +205,17 @@ class MainActivity: AppCompatActivity() {
200
205
return true
201
206
}
202
207
203
- override fun onOptionsItemSelected (item : MenuItem ? ): Boolean {
204
- return when (item!! .itemId) {
208
+ override fun onOptionsItemSelected (item : MenuItem ): Boolean {
209
+ return when (item.itemId) {
205
210
R .id.settingsItem -> {
206
211
startActivity(Intent (this , SettingsActivity ::class .java).putExtra(" xposed" , false ))
207
212
true
208
213
}
214
+ R .id.sortItem -> {
215
+ prefs.edit().putBoolean(" sorting_order" , ! prefs.getBoolean(" sorting_order" , DEFAULT_SORTING_ORDER )).apply ()
216
+ sortWifiEntries(true )
217
+ true
218
+ }
209
219
else -> super .onOptionsItemSelected(item)
210
220
}
211
221
}
0 commit comments