diff --git a/demo/src/main/java/com/google/android/fhir/demo/HomeFragment.kt b/demo/src/main/java/com/google/android/fhir/demo/HomeFragment.kt new file mode 100644 index 0000000000..c6285d685e --- /dev/null +++ b/demo/src/main/java/com/google/android/fhir/demo/HomeFragment.kt @@ -0,0 +1,61 @@ +/* + * Copyright 2022-2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.android.fhir.demo + +import android.os.Bundle +import android.view.MenuItem +import android.view.View +import androidx.appcompat.app.AppCompatActivity +import androidx.cardview.widget.CardView +import androidx.fragment.app.Fragment +import androidx.navigation.fragment.findNavController + +class HomeFragment : Fragment(R.layout.fragment_home) { + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + (requireActivity() as AppCompatActivity).supportActionBar?.apply { + title = resources.getString(R.string.app_name) + setDisplayHomeAsUpEnabled(true) + } + setHasOptionsMenu(true) + (activity as MainActivity).setDrawerEnabled(true) + setOnClicks() + } + + private fun setOnClicks() { + requireView().findViewById(R.id.item_new_patient).setOnClickListener { + findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToAddPatientFragment()) + } + requireView().findViewById(R.id.item_patient_list).setOnClickListener { + findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToPatientList()) + } + requireView().findViewById(R.id.item_search).setOnClickListener { + findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToPatientList()) + } + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + return when (item.itemId) { + android.R.id.home -> { + (requireActivity() as MainActivity).openNavigationDrawer() + true + } + else -> false + } + } +} diff --git a/demo/src/main/java/com/google/android/fhir/demo/PatientListFragment.kt b/demo/src/main/java/com/google/android/fhir/demo/PatientListFragment.kt index 5d6bc8a10b..30b37c4bae 100644 --- a/demo/src/main/java/com/google/android/fhir/demo/PatientListFragment.kt +++ b/demo/src/main/java/com/google/android/fhir/demo/PatientListFragment.kt @@ -38,6 +38,7 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope +import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.RecyclerView @@ -152,7 +153,7 @@ class PatientListFragment : Fragment() { addPatient.setColorFilter(Color.WHITE) } setHasOptionsMenu(true) - (activity as MainActivity).setDrawerEnabled(true) + (activity as MainActivity).setDrawerEnabled(false) lifecycleScope.launch { mainActivityViewModel.pollState.collect { @@ -233,9 +234,7 @@ class PatientListFragment : Fragment() { override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { android.R.id.home -> { - // hide the soft keyboard when the navigation drawer is shown on the screen. - searchView.clearFocus() - (requireActivity() as MainActivity).openNavigationDrawer() + NavHostFragment.findNavController(this).navigateUp() true } else -> false diff --git a/demo/src/main/res/drawable/ic_home_new_patient.xml b/demo/src/main/res/drawable/ic_home_new_patient.xml new file mode 100644 index 0000000000..342b06032c --- /dev/null +++ b/demo/src/main/res/drawable/ic_home_new_patient.xml @@ -0,0 +1,13 @@ + + + diff --git a/demo/src/main/res/drawable/ic_home_patient_list.xml b/demo/src/main/res/drawable/ic_home_patient_list.xml new file mode 100644 index 0000000000..803af9b283 --- /dev/null +++ b/demo/src/main/res/drawable/ic_home_patient_list.xml @@ -0,0 +1,13 @@ + + + diff --git a/demo/src/main/res/drawable/ic_home_search.xml b/demo/src/main/res/drawable/ic_home_search.xml new file mode 100644 index 0000000000..4573f6e541 --- /dev/null +++ b/demo/src/main/res/drawable/ic_home_search.xml @@ -0,0 +1,13 @@ + + + diff --git a/demo/src/main/res/layout/fragment_home.xml b/demo/src/main/res/layout/fragment_home.xml new file mode 100644 index 0000000000..870a141d0e --- /dev/null +++ b/demo/src/main/res/layout/fragment_home.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/src/main/res/navigation/reference_nav_graph.xml b/demo/src/main/res/navigation/reference_nav_graph.xml index 2680b56d11..5174339c06 100644 --- a/demo/src/main/res/navigation/reference_nav_graph.xml +++ b/demo/src/main/res/navigation/reference_nav_graph.xml @@ -4,9 +4,25 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/reference_nav_graph" - app:startDestination="@id/patient_list" + app:startDestination="@id/home_fragment" > + + + + + #fff8e1 #c62828 #ffebee - #DADCE0 - #ffffff + #77DADCE0 + #FFDADCE0 #E8F0FE #9AFFFFFF @@ -87,4 +87,9 @@ #C4C7C5 #8E918F + + #000000 + #FFFFFFFF + #4D4D4D + diff --git a/demo/src/main/res/values/dimens.xml b/demo/src/main/res/values/dimens.xml index edc3804783..c2f9aa0a5d 100644 --- a/demo/src/main/res/values/dimens.xml +++ b/demo/src/main/res/values/dimens.xml @@ -24,4 +24,14 @@ 5dp 170dp 65dp + 10dp + 8dp + 10dp + 10dp + 30dp + 20dp + 8dp + 6dp + 10dp + 20sp