diff --git a/src/main/kotlin/com/looker/droidify/ui/activities/MainActivityX.kt b/src/main/kotlin/com/looker/droidify/ui/activities/MainActivityX.kt index f40de511..e2ba456f 100644 --- a/src/main/kotlin/com/looker/droidify/ui/activities/MainActivityX.kt +++ b/src/main/kotlin/com/looker/droidify/ui/activities/MainActivityX.kt @@ -3,11 +3,13 @@ package com.looker.droidify.ui.activities import android.content.Context import android.content.Intent import android.os.Bundle -import android.view.* +import android.view.Menu +import android.view.MenuItem import android.view.inputmethod.InputMethodManager import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.core.view.WindowCompat +import androidx.lifecycle.MutableLiveData import androidx.lifecycle.lifecycleScope import androidx.navigation.NavController import androidx.navigation.fragment.NavHostFragment @@ -23,7 +25,6 @@ import com.looker.droidify.R import com.looker.droidify.content.Preferences import com.looker.droidify.databinding.ActivityMainXBinding import com.looker.droidify.installer.AppInstaller -import com.looker.droidify.screen.* import com.looker.droidify.service.Connection import com.looker.droidify.service.SyncService import com.looker.droidify.ui.fragments.MainNavFragmentX @@ -52,6 +53,7 @@ class MainActivityX : AppCompatActivity() { lateinit var appBarConfiguration: AppBarConfiguration private lateinit var navController: NavController private val viewModel: MainActivityViewModelX by viewModels() + val menuSetup = MutableLiveData() private val syncConnection = Connection(SyncService::class.java, onBind = { _, _ -> navController.currentDestination?.let { @@ -126,6 +128,7 @@ class MainActivityX : AppCompatActivity() { override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_main, menu) + menuSetup.value = true return super.onCreateOptionsMenu(menu) } diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt index 4cd5c19b..7a792eac 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt @@ -4,6 +4,7 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.appcompat.widget.SearchView import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material.Scaffold 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.theme.AppTheme import com.looker.droidify.utility.isDarkTheme +import com.looker.droidify.widget.FocusSearchView - -// TODO add chips bar to navigate categories class ExploreFragment : MainNavFragmentX() { 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 + } + }) + } + } } } diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt index 033dea46..77152de4 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt @@ -4,6 +4,7 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.appcompat.widget.SearchView import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material.Scaffold 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.theme.AppTheme import com.looker.droidify.utility.isDarkTheme +import com.looker.droidify.widget.FocusSearchView 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 + } + }) + } + } } } diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt index 5f36657c..3120733b 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt @@ -4,9 +4,11 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.appcompat.widget.SearchView import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material.Scaffold import com.google.android.material.composethemeadapter.MdcTheme +import com.looker.droidify.R import com.looker.droidify.content.Preferences import com.looker.droidify.database.entity.Repository 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.theme.AppTheme import com.looker.droidify.utility.isDarkTheme +import com.looker.droidify.widget.FocusSearchView 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 + } + }) + } + } } } diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/MainNavFragmentX.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/MainNavFragmentX.kt index 30de6f98..e154de4e 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/MainNavFragmentX.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/MainNavFragmentX.kt @@ -9,7 +9,7 @@ import com.looker.droidify.ui.activities.MainActivityX import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX abstract class MainNavFragmentX : BaseNavFragment() { - private val mainActivityX: MainActivityX + protected val mainActivityX: MainActivityX get() = requireActivity() as MainActivityX val viewModel: MainNavFragmentViewModelX by viewModels { MainNavFragmentViewModelX.Factory(mainActivityX.db, primarySource, secondarySource)