Update: Wire the search bar

This commit is contained in:
machiav3lli 2022-02-27 01:40:08 +01:00
parent 891ad6bc6e
commit b047b5e814
5 changed files with 61 additions and 5 deletions

View File

@ -3,11 +3,13 @@ package com.looker.droidify.ui.activities
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.* import android.view.Menu
import android.view.MenuItem
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
@ -23,7 +25,6 @@ import com.looker.droidify.R
import com.looker.droidify.content.Preferences import com.looker.droidify.content.Preferences
import com.looker.droidify.databinding.ActivityMainXBinding import com.looker.droidify.databinding.ActivityMainXBinding
import com.looker.droidify.installer.AppInstaller import com.looker.droidify.installer.AppInstaller
import com.looker.droidify.screen.*
import com.looker.droidify.service.Connection import com.looker.droidify.service.Connection
import com.looker.droidify.service.SyncService import com.looker.droidify.service.SyncService
import com.looker.droidify.ui.fragments.MainNavFragmentX import com.looker.droidify.ui.fragments.MainNavFragmentX
@ -52,6 +53,7 @@ class MainActivityX : AppCompatActivity() {
lateinit var appBarConfiguration: AppBarConfiguration lateinit var appBarConfiguration: AppBarConfiguration
private lateinit var navController: NavController private lateinit var navController: NavController
private val viewModel: MainActivityViewModelX by viewModels() private val viewModel: MainActivityViewModelX by viewModels()
val menuSetup = MutableLiveData<Boolean>()
private val syncConnection = Connection(SyncService::class.java, onBind = { _, _ -> private val syncConnection = Connection(SyncService::class.java, onBind = { _, _ ->
navController.currentDestination?.let { navController.currentDestination?.let {
@ -126,6 +128,7 @@ class MainActivityX : AppCompatActivity() {
override fun onCreateOptionsMenu(menu: Menu): Boolean { override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_main, menu) menuInflater.inflate(R.menu.menu_main, menu)
menuSetup.value = true
return super.onCreateOptionsMenu(menu) return super.onCreateOptionsMenu(menu)
} }

View File

@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.widget.SearchView
import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material.Scaffold import androidx.compose.material.Scaffold
import androidx.core.view.children import androidx.core.view.children
@ -17,9 +18,8 @@ import com.looker.droidify.entity.Section
import com.looker.droidify.ui.compose.ProductsVerticalRecycler import com.looker.droidify.ui.compose.ProductsVerticalRecycler
import com.looker.droidify.ui.compose.theme.AppTheme import com.looker.droidify.ui.compose.theme.AppTheme
import com.looker.droidify.utility.isDarkTheme import com.looker.droidify.utility.isDarkTheme
import com.looker.droidify.widget.FocusSearchView
// TODO add chips bar to navigate categories
class ExploreFragment : MainNavFragmentX() { class ExploreFragment : MainNavFragmentX() {
private lateinit var binding: FragmentExploreXBinding private lateinit var binding: FragmentExploreXBinding
@ -95,5 +95,21 @@ class ExploreFragment : MainNavFragmentX() {
) )
} }
} }
mainActivityX.menuSetup.observe(viewLifecycleOwner) {
if (it != null) {
val searchView =
mainActivityX.toolbar.menu.findItem(R.id.toolbar_search).actionView as FocusSearchView
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
return true
}
override fun onQueryTextChange(newText: String?): Boolean {
if (isResumed) viewModel.setSearchQuery(newText.orEmpty())
return true
}
})
}
}
} }
} }

View File

@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.widget.SearchView
import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material.Scaffold import androidx.compose.material.Scaffold
import com.google.android.material.composethemeadapter.MdcTheme import com.google.android.material.composethemeadapter.MdcTheme
@ -15,6 +16,7 @@ import com.looker.droidify.ui.compose.ProductsHorizontalRecycler
import com.looker.droidify.ui.compose.ProductsVerticalRecycler import com.looker.droidify.ui.compose.ProductsVerticalRecycler
import com.looker.droidify.ui.compose.theme.AppTheme import com.looker.droidify.ui.compose.theme.AppTheme
import com.looker.droidify.utility.isDarkTheme import com.looker.droidify.utility.isDarkTheme
import com.looker.droidify.widget.FocusSearchView
class InstalledFragment : MainNavFragmentX() { class InstalledFragment : MainNavFragmentX() {
@ -97,5 +99,21 @@ class InstalledFragment : MainNavFragmentX() {
} }
} }
} }
mainActivityX.menuSetup.observe(viewLifecycleOwner) {
if (it != null) {
val searchView =
mainActivityX.toolbar.menu.findItem(R.id.toolbar_search).actionView as FocusSearchView
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
return true
}
override fun onQueryTextChange(newText: String?): Boolean {
if (isResumed) viewModel.setSearchQuery(newText.orEmpty())
return true
}
})
}
}
} }
} }

View File

@ -4,9 +4,11 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.widget.SearchView
import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material.Scaffold import androidx.compose.material.Scaffold
import com.google.android.material.composethemeadapter.MdcTheme import com.google.android.material.composethemeadapter.MdcTheme
import com.looker.droidify.R
import com.looker.droidify.content.Preferences import com.looker.droidify.content.Preferences
import com.looker.droidify.database.entity.Repository import com.looker.droidify.database.entity.Repository
import com.looker.droidify.databinding.FragmentLatestXBinding import com.looker.droidify.databinding.FragmentLatestXBinding
@ -14,6 +16,7 @@ import com.looker.droidify.ui.compose.ProductsHorizontalRecycler
import com.looker.droidify.ui.compose.ProductsVerticalRecycler import com.looker.droidify.ui.compose.ProductsVerticalRecycler
import com.looker.droidify.ui.compose.theme.AppTheme import com.looker.droidify.ui.compose.theme.AppTheme
import com.looker.droidify.utility.isDarkTheme import com.looker.droidify.utility.isDarkTheme
import com.looker.droidify.widget.FocusSearchView
class LatestFragment : MainNavFragmentX() { class LatestFragment : MainNavFragmentX() {
@ -79,5 +82,21 @@ class LatestFragment : MainNavFragmentX() {
} }
} }
} }
mainActivityX.menuSetup.observe(viewLifecycleOwner) {
if (it != null) {
val searchView =
mainActivityX.toolbar.menu.findItem(R.id.toolbar_search).actionView as FocusSearchView
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
return true
}
override fun onQueryTextChange(newText: String?): Boolean {
if (isResumed) viewModel.setSearchQuery(newText.orEmpty())
return true
}
})
}
}
} }
} }

View File

@ -9,7 +9,7 @@ import com.looker.droidify.ui.activities.MainActivityX
import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX
abstract class MainNavFragmentX : BaseNavFragment() { abstract class MainNavFragmentX : BaseNavFragment() {
private val mainActivityX: MainActivityX protected val mainActivityX: MainActivityX
get() = requireActivity() as MainActivityX get() = requireActivity() as MainActivityX
val viewModel: MainNavFragmentViewModelX by viewModels { val viewModel: MainNavFragmentViewModelX by viewModels {
MainNavFragmentViewModelX.Factory(mainActivityX.db, primarySource, secondarySource) MainNavFragmentViewModelX.Factory(mainActivityX.db, primarySource, secondarySource)