| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 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
- import androidx.lifecycle.Observer
- import androidx.lifecycle.ViewModelProviders
- import androidx.navigation.Navigation
- import com.sduduzog.slimlauncher.R
- import com.sduduzog.slimlauncher.adapters.AddAppAdapter
- import com.sduduzog.slimlauncher.data.App
- import com.sduduzog.slimlauncher.data.MainViewModel
- import com.sduduzog.slimlauncher.ui.BaseFragment
- import com.sduduzog.slimlauncher.utils.LoadInstalledApps
- import com.sduduzog.slimlauncher.utils.OnAppClickedListener
- import kotlinx.android.synthetic.main.add_app_fragment.*
- class AddAppFragment : BaseFragment(), OnAppClickedListener {
- override fun getFragmentView(): View = add_app_fragment as View
- private lateinit var viewModel: MainViewModel
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
- return inflater.inflate(R.layout.add_app_fragment, container, false)
- }
- override fun onActivityCreated(savedInstanceState: Bundle?) {
- super.onActivityCreated(savedInstanceState)
- val adapter = AddAppAdapter(this)
- add_app_fragment_list.adapter = adapter
- activity?.let {
- viewModel = ViewModelProviders.of(it).get(MainViewModel::class.java)
- } ?: throw Error("How the fuck is this fragment alive while there's no activity?")
- viewModel.installedApps.observe(this, Observer {
- val homeApps = viewModel.apps.value.orEmpty()
- it?.let { apps ->
- adapter.setItems(apps.filterNot { app -> homeApps.map { homeApp -> homeApp.packageName }.contains(app.packageName) })
- add_app_fragment_progress_bar.visibility = View.GONE
- } ?: run {
- add_app_fragment_progress_bar.visibility = View.VISIBLE
- }
- })
- 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
- }
- })
- }
- override fun onAppClicked(app: App) {
- viewModel.add(app)
- Navigation.findNavController(add_app_fragment).popBackStack()
- }
- }
|