AddAppFragment.kt 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package com.sduduzog.slimlauncher.ui.options
  2. import android.os.Bundle
  3. import android.text.Editable
  4. import android.text.TextWatcher
  5. import android.view.LayoutInflater
  6. import android.view.View
  7. import android.view.ViewGroup
  8. import androidx.lifecycle.Observer
  9. import androidx.lifecycle.ViewModelProviders
  10. import androidx.navigation.Navigation
  11. import com.sduduzog.slimlauncher.R
  12. import com.sduduzog.slimlauncher.adapters.AddAppAdapter
  13. import com.sduduzog.slimlauncher.data.App
  14. import com.sduduzog.slimlauncher.data.MainViewModel
  15. import com.sduduzog.slimlauncher.ui.BaseFragment
  16. import com.sduduzog.slimlauncher.utils.LoadInstalledApps
  17. import com.sduduzog.slimlauncher.utils.OnAppClickedListener
  18. import kotlinx.android.synthetic.main.add_app_fragment.*
  19. class AddAppFragment : BaseFragment(), OnAppClickedListener {
  20. override fun getFragmentView(): View = add_app_fragment as View
  21. private lateinit var viewModel: MainViewModel
  22. override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
  23. return inflater.inflate(R.layout.add_app_fragment, container, false)
  24. }
  25. override fun onActivityCreated(savedInstanceState: Bundle?) {
  26. super.onActivityCreated(savedInstanceState)
  27. val adapter = AddAppAdapter(this)
  28. add_app_fragment_list.adapter = adapter
  29. activity?.let {
  30. viewModel = ViewModelProviders.of(it).get(MainViewModel::class.java)
  31. } ?: throw Error("How the fuck is this fragment alive while there's no activity?")
  32. viewModel.installedApps.observe(this, Observer {
  33. val homeApps = viewModel.apps.value.orEmpty()
  34. it?.let { apps ->
  35. adapter.setItems(apps.filterNot { app -> homeApps.map { homeApp -> homeApp.packageName }.contains(app.packageName) })
  36. add_app_fragment_progress_bar.visibility = View.GONE
  37. } ?: run {
  38. add_app_fragment_progress_bar.visibility = View.VISIBLE
  39. }
  40. })
  41. LoadInstalledApps(viewModel).execute(context!!.packageManager)
  42. add_app_fragment_edit_text.addTextChangedListener(object: TextWatcher {
  43. override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
  44. // Do nothing
  45. s?.let {
  46. LoadInstalledApps(viewModel, it.toString()).execute(context!!.packageManager)
  47. }
  48. }
  49. override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
  50. // Do nothing
  51. }
  52. override fun afterTextChanged(s: Editable?) {
  53. // Do nothing
  54. }
  55. })
  56. }
  57. override fun onAppClicked(app: App) {
  58. viewModel.add(app)
  59. Navigation.findNavController(add_app_fragment).popBackStack()
  60. }
  61. }