From e86b24c3f68a62c2871c34f2b377bcff2672ca3e Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Fri, 18 Nov 2022 22:42:56 +0100 Subject: [PATCH] Use material toolbar without action bar --- .../mealient/ui/activity/MainActivity.kt | 30 +++++++------------ .../ui/activity/MainActivityUiState.kt | 1 - .../mealient/ui/add/AddRecipeFragment.kt | 7 +---- .../ui/auth/AuthenticationFragment.kt | 7 +---- .../mealient/ui/baseurl/BaseURLFragment.kt | 7 +---- .../ui/disclaimer/DisclaimerFragment.kt | 7 +---- .../ui/recipes/RecipesListFragment.kt | 7 +---- app/src/main/res/layout/main_activity.xml | 7 +++-- 8 files changed, 19 insertions(+), 54 deletions(-) diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt index f7744bd..45ba0b1 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt @@ -1,7 +1,6 @@ package gq.kirmanak.mealient.ui.activity import android.os.Bundle -import android.view.Menu import android.view.MenuItem import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity @@ -29,8 +28,6 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) { private val binding: MainActivityBinding by viewBinding(MainActivityBinding::bind, R.id.drawer) private val viewModel by viewModels() - private val title: String by lazy { getString(R.string.app_name) } - private val uiState: MainActivityUiState get() = viewModel.uiState private val navController: NavController get() = binding.navHost.getFragment().navController @@ -47,6 +44,7 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) { configureNavGraph() viewModel.uiStateLive.observe(this, ::onUiStateChange) binding.navigationView.setNavigationItemSelectedListener(::onNavigationItemSelected) + supportActionBar?.hide() } private fun configureNavGraph() { @@ -60,8 +58,6 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) { } private fun configureToolbar() { - setSupportActionBar(binding.toolbar) - binding.toolbar.setNavigationIcon(R.drawable.ic_toolbar) binding.toolbar.setNavigationOnClickListener { binding.drawer.open() } } @@ -87,21 +83,15 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) { private fun onUiStateChange(uiState: MainActivityUiState) { logger.v { "onUiStateChange() called with: uiState = $uiState" } - supportActionBar?.title = if (uiState.titleVisible) title else null - binding.navigationView.isVisible = uiState.navigationVisible - val menu = binding.navigationView.menu - menu.findItem(R.id.logout).isVisible = uiState.canShowLogout - menu.findItem(R.id.login).isVisible = uiState.canShowLogin - invalidateOptionsMenu() - } - - override fun onCreateOptionsMenu(menu: Menu): Boolean { - logger.v { "onCreateOptionsMenu() called with: menu = $menu" } - menuInflater.inflate(R.menu.main_toolbar, menu) - val searchItem = menu.findItem(R.id.search_recipe_action) - searchItem.isVisible = uiState.searchVisible - setupSearchItem(searchItem) - return true + with(binding.navigationView) { + isVisible = uiState.navigationVisible + menu.findItem(R.id.logout).isVisible = uiState.canShowLogout + menu.findItem(R.id.login).isVisible = uiState.canShowLogin + } + binding.toolbar.menu.findItem(R.id.search_recipe_action).apply { + isVisible = uiState.searchVisible + setupSearchItem(this) + } } private fun setupSearchItem(searchItem: MenuItem) { diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivityUiState.kt b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivityUiState.kt index 3317d18..e0efc7e 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivityUiState.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivityUiState.kt @@ -2,7 +2,6 @@ package gq.kirmanak.mealient.ui.activity data class MainActivityUiState( val loginButtonVisible: Boolean = false, - val titleVisible: Boolean = true, val isAuthorized: Boolean = false, val navigationVisible: Boolean = false, val searchVisible: Boolean = false, diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/add/AddRecipeFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/add/AddRecipeFragment.kt index d311d68..a3ec5dd 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/add/AddRecipeFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/add/AddRecipeFragment.kt @@ -38,12 +38,7 @@ class AddRecipeFragment : Fragment(R.layout.fragment_add_recipe) { super.onViewCreated(view, savedInstanceState) logger.v { "onViewCreated() called with: view = $view, savedInstanceState = $savedInstanceState" } activityViewModel.updateUiState { - it.copy( - loginButtonVisible = true, - titleVisible = false, - navigationVisible = true, - searchVisible = false, - ) + it.copy(loginButtonVisible = true, navigationVisible = true, searchVisible = false) } viewModel.loadPreservedRequest() setupViews() diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/auth/AuthenticationFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/auth/AuthenticationFragment.kt index bd108f7..14a2771 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/auth/AuthenticationFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/auth/AuthenticationFragment.kt @@ -32,12 +32,7 @@ class AuthenticationFragment : Fragment(R.layout.fragment_authentication) { logger.v { "onViewCreated() called with: view = $view, savedInstanceState = $savedInstanceState" } binding.button.setOnClickListener { onLoginClicked() } activityViewModel.updateUiState { - it.copy( - loginButtonVisible = false, - titleVisible = true, - navigationVisible = false, - searchVisible = false - ) + it.copy(loginButtonVisible = false, navigationVisible = false, searchVisible = false) } viewModel.uiState.observe(viewLifecycleOwner, ::onUiStateChange) } diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/baseurl/BaseURLFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/baseurl/BaseURLFragment.kt index 31b1bfa..b85b318 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/baseurl/BaseURLFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/baseurl/BaseURLFragment.kt @@ -34,12 +34,7 @@ class BaseURLFragment : Fragment(R.layout.fragment_base_url) { binding.button.setOnClickListener(::onProceedClick) viewModel.uiState.observe(viewLifecycleOwner, ::onUiStateChange) activityViewModel.updateUiState { - it.copy( - loginButtonVisible = false, - titleVisible = true, - navigationVisible = false, - searchVisible = false - ) + it.copy(loginButtonVisible = false, navigationVisible = false, searchVisible = false) } } diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerFragment.kt index bd024e4..1408ea3 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerFragment.kt @@ -58,12 +58,7 @@ class DisclaimerFragment : Fragment(R.layout.fragment_disclaimer) { } viewModel.startCountDown() activityViewModel.updateUiState { - it.copy( - loginButtonVisible = false, - titleVisible = true, - navigationVisible = false, - searchVisible = false - ) + it.copy(loginButtonVisible = false, navigationVisible = false, searchVisible = false) } } } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListFragment.kt index 4752876..8209f20 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListFragment.kt @@ -49,12 +49,7 @@ class RecipesListFragment : Fragment(R.layout.fragment_recipes_list) { super.onViewCreated(view, savedInstanceState) logger.v { "onViewCreated() called with: view = $view, savedInstanceState = $savedInstanceState" } activityViewModel.updateUiState { - it.copy( - loginButtonVisible = true, - titleVisible = false, - navigationVisible = true, - searchVisible = true, - ) + it.copy(loginButtonVisible = true, navigationVisible = true, searchVisible = true) } setupRecipeAdapter() hideKeyboardOnScroll() diff --git a/app/src/main/res/layout/main_activity.xml b/app/src/main/res/layout/main_activity.xml index f5b97f5..d5c4d2a 100644 --- a/app/src/main/res/layout/main_activity.xml +++ b/app/src/main/res/layout/main_activity.xml @@ -10,8 +10,7 @@ + android:layout_height="match_parent"> + app:layout_scrollFlags="scroll|snap|enterAlways" + app:menu="@menu/main_toolbar" + app:navigationIcon="@drawable/ic_toolbar" />