@@ -37,6 +37,7 @@ import android.widget.ImageView
37
37
import android.widget.TextView
38
38
import androidx.activity.result.ActivityResultLauncher
39
39
import androidx.appcompat.widget.PopupMenu
40
+ import androidx.appcompat.widget.SearchView
40
41
import androidx.appcompat.widget.Toolbar
41
42
import androidx.appcompat.widget.TooltipCompat
42
43
import androidx.core.os.bundleOf
@@ -64,7 +65,7 @@ import com.google.zxing.WriterException
64
65
import timber.log.Timber
65
66
import java.nio.charset.StandardCharsets
66
67
67
- class ProfilesFragment : ToolbarFragment (), Toolbar.OnMenuItemClickListener {
68
+ class ProfilesFragment : ToolbarFragment (), Toolbar.OnMenuItemClickListener, SearchView.OnQueryTextListener {
68
69
companion object {
69
70
/* *
70
71
* used for callback from stateChanged from MainActivity
@@ -237,6 +238,17 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
237
238
notifyItemInserted(pos)
238
239
}
239
240
241
+ fun filter (name : String ) {
242
+ val active = ProfileManager .getActiveProfiles()?.toMutableList() ? : mutableListOf ()
243
+ profiles.clear()
244
+ active.forEach {
245
+ if (it.name?.contains(name, true ) ? : false || it.host.contains(name, true )) {
246
+ profiles.add(it)
247
+ }
248
+ }
249
+ notifyDataSetChanged()
250
+ }
251
+
240
252
fun move (from : Int , to : Int ) {
241
253
undoManager.flush()
242
254
val first = profiles[from]
@@ -322,6 +334,13 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
322
334
startActivity(Intent (context, ProfileConfigActivity ::class .java).putExtra(Action .EXTRA_PROFILE_ID , profile.id))
323
335
}
324
336
337
+ override fun onQueryTextChange (query : String ): Boolean {
338
+ profilesAdapter.filter(query)
339
+ return false
340
+ }
341
+
342
+ override fun onQueryTextSubmit (query : String ): Boolean = false
343
+
325
344
override fun onCreateView (inflater : LayoutInflater , container : ViewGroup ? , savedInstanceState : Bundle ? ): View ? =
326
345
inflater.inflate(R .layout.layout_list, container, false )
327
346
@@ -331,6 +350,10 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
331
350
toolbar.setTitle(R .string.profiles)
332
351
toolbar.inflateMenu(R .menu.profile_manager_menu)
333
352
toolbar.setOnMenuItemClickListener(this )
353
+ val searchView = toolbar.findViewById<SearchView >(R .id.action_search)
354
+ searchView.setOnQueryTextListener(this )
355
+ searchView.setQueryHint(getString(android.R .string.search_go))
356
+
334
357
ProfileManager .ensureNotEmpty()
335
358
profilesList = view.findViewById(R .id.list)
336
359
ViewCompat .setOnApplyWindowInsetsListener(profilesList, MainListListener )
0 commit comments