0
0
mirror of https://github.com/mediathekview/zapp.git synced 2024-09-20 04:12:14 +02:00

Share search query in shared view model

This commit is contained in:
Christine Coenen 2023-08-18 18:05:57 +02:00
parent e62415ec16
commit a57d4c3040
4 changed files with 31 additions and 4 deletions

View File

@ -14,6 +14,7 @@ import androidx.core.content.ContextCompat
import androidx.core.view.MenuProvider
import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.core.widget.addTextChangedListener
import androidx.navigation.NavController
import androidx.navigation.NavDestination
import androidx.navigation.fragment.NavHostFragment
@ -25,10 +26,13 @@ import com.google.android.material.appbar.AppBarLayout.LayoutParams.SCROLL_FLAG_
import com.google.android.material.appbar.AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL
import com.google.android.material.search.SearchView
import de.christinecoenen.code.zapp.R
import de.christinecoenen.code.zapp.app.search.SearchViewModel
import de.christinecoenen.code.zapp.app.settings.repository.SettingsRepository
import de.christinecoenen.code.zapp.databinding.ActivityMainBinding
import de.christinecoenen.code.zapp.utils.system.SystemUiHelper
import org.koin.android.ext.android.inject
import org.koin.androidx.viewmodel.ext.android.viewModel
class MainActivity : AppCompatActivity(), MenuProvider {
@ -37,6 +41,8 @@ class MainActivity : AppCompatActivity(), MenuProvider {
private val settingsRepository: SettingsRepository by inject()
private val searchViewModel: SearchViewModel by viewModel()
private lateinit var navController: NavController
private lateinit var appBarConfiguration: AppBarConfiguration
@ -86,6 +92,9 @@ class MainActivity : AppCompatActivity(), MenuProvider {
onBackPressedDispatcher.addCallback(this, onSearchViewPressedCallback)
binding.searchView.addTransitionListener(searchViewTransistionListener)
binding.searchView.editText.addTextChangedListener {
searchViewModel.setSearchQuery(it.toString())
}
addMenuProvider(this)

View File

@ -5,15 +5,18 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import de.christinecoenen.code.zapp.databinding.SearchFragmentBinding
import org.koin.androidx.viewmodel.ext.android.viewModel
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import org.koin.androidx.viewmodel.ext.android.activityViewModel
class SearchFragment : Fragment() {
private var _binding: SearchFragmentBinding? = null
private val binding: SearchFragmentBinding get() = _binding!!
private val viewModel: SearchViewModel by viewModel()
private val viewModel: SearchViewModel by activityViewModel()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
@ -21,6 +24,12 @@ class SearchFragment : Fragment() {
): View {
_binding = SearchFragmentBinding.inflate(inflater, container, false)
viewLifecycleOwner.lifecycleScope.launch {
viewModel.searchQuery.collectLatest { query ->
binding.test.text = query
}
}
return binding.root
}

View File

@ -1,7 +1,15 @@
package de.christinecoenen.code.zapp.app.search
import androidx.lifecycle.ViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
class SearchViewModel : ViewModel() {
// TODO: Implement the ViewModel
}
private val _searchQuery = MutableStateFlow("")
val searchQuery = _searchQuery.asStateFlow()
fun setSearchQuery(query: String?) {
_searchQuery.tryEmit(query ?: "")
}
}

View File

@ -6,6 +6,7 @@
tools:context=".app.search.SearchFragment">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/test"
style="@style/TextAppearance.AppCompat.Display4"
android:layout_width="match_parent"
android:layout_height="match_parent"