Quellcode durchsuchen

chore: quick search when adding apps

beautusg vor 7 Jahren
Ursprung
Commit
92a7280c54

+ 18 - 0
app/src/main/java/com/sduduzog/slimlauncher/ui/options/AddAppFragment.kt

@@ -1,6 +1,8 @@
 package com.sduduzog.slimlauncher.ui.options
 
 import android.os.Bundle
+import android.text.Editable
+import android.text.TextWatcher
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
@@ -45,6 +47,22 @@ class AddAppFragment : BaseFragment(), OnAppClickedListener {
             }
         })
         LoadInstalledApps(viewModel).execute(context!!.packageManager)
+        add_app_fragment_edit_text.addTextChangedListener(object: TextWatcher {
+            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
+                // Do nothing
+                s?.let {
+                    LoadInstalledApps(viewModel, it.toString()).execute(context!!.packageManager)
+                }
+            }
+
+            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
+                // Do nothing
+            }
+
+            override fun afterTextChanged(s: Editable?) {
+                // Do nothing
+            }
+        })
     }
 
 

+ 2 - 2
app/src/main/java/com/sduduzog/slimlauncher/utils/LoadInstalledApps.kt

@@ -11,7 +11,7 @@ import com.sduduzog.slimlauncher.data.App
 import com.sduduzog.slimlauncher.data.MainViewModel
 import java.util.*
 
-class LoadInstalledApps(private val viewModel: MainViewModel?) : AsyncTask<PackageManager, Unit, List<App>>() {
+class LoadInstalledApps(private val viewModel: MainViewModel?, private val filterString: String = "") : AsyncTask<PackageManager, Unit, List<App>>() {
 
     private lateinit var packageManager: PackageManager
 
@@ -53,6 +53,6 @@ class LoadInstalledApps(private val viewModel: MainViewModel?) : AsyncTask<Packa
     }
 
     override fun onPostExecute(result: List<App>) {
-        viewModel?.installedApps?.value = result
+        viewModel?.installedApps?.value = result.filter { it.appName.startsWith(filterString, true) }
     }
 }