Selaa lähdekoodia

add navigation from person to tab component measures

MrOzOn 5 vuotta sitten
vanhempi
commit
eb26e49e7d

+ 1 - 0
app/build.gradle

@@ -66,4 +66,5 @@ dependencies {
     implementation project(':feature_auth')
     implementation project(':feature_person')
     implementation project(':feature_measure_type')
+    implementation project(':feature_measure')
 }

+ 5 - 0
app/src/main/java/com/mrozon/healthdiary/navigation/ListPersonNavigatorImpl.kt

@@ -14,4 +14,9 @@ class ListPersonNavigatorImpl @Inject constructor()
         val bundle = bundleOf("title" to title, "id" to id)
         navController.navigate(R.id.action_listPersonFragment_to_editPersonFragment, bundle)
     }
+
+    override fun navigateToMeasureForPerson(navController: NavController, id: Long) {
+        val bundle = bundleOf( "id" to id)
+        navController.navigate(R.id.action_listPersonFragment_to_tabMeasureFragment, bundle)
+    }
 }

+ 13 - 0
app/src/main/res/navigation/nav_graph.xml

@@ -90,6 +90,13 @@
             app:exitAnim="@anim/slide_out_left"
             app:popEnterAnim="@anim/slide_in_left"
             app:popExitAnim="@anim/slide_out_right"/>
+        <action
+            android:id="@+id/action_listPersonFragment_to_tabMeasureFragment"
+            app:destination="@id/tabMeasureFragment"
+            app:enterAnim="@anim/slide_in_right"
+            app:exitAnim="@anim/slide_out_left"
+            app:popEnterAnim="@anim/slide_in_left"
+            app:popExitAnim="@anim/slide_out_right"/>
     </fragment>
 
     <fragment
@@ -128,4 +135,10 @@
         app:popEnterAnim="@anim/slide_in_left"
         app:popExitAnim="@anim/slide_out_right"/>
 
+    <fragment
+        android:id="@+id/tabMeasureFragment"
+        android:name="com.mrozon.feature_measure.presentation.TabMeasureFragment"
+        tools:layout="@layout/fragment_tab_measure"
+        android:label="TabMeasureFragment" />
+
 </navigation>

+ 2 - 0
core_api/src/main/java/com/mrozon/core_api/navigation/ListPersonNavigator.kt

@@ -5,4 +5,6 @@ import androidx.navigation.NavController
 interface ListPersonNavigator {
 
     fun navigateToEditPerson(navController: NavController, title: String, id: Long)
+
+    fun navigateToMeasureForPerson(navController: NavController, id: Long)
 }

+ 17 - 0
feature_measure/src/main/java/com/mrozon/feature_measure/presentation/TabMeasureFragment.kt

@@ -1,13 +1,30 @@
 package com.mrozon.feature_measure.presentation
 
+import android.content.Context
+import androidx.fragment.app.viewModels
+import androidx.lifecycle.ViewModelProvider
 import com.mrozon.feature_measure.R
 import com.mrozon.feature_measure.databinding.FragmentTabMeasureBinding
+import com.mrozon.feature_measure.di.TabMeasureFragmentComponent
 import com.mrozon.utils.base.BaseFragment
+import timber.log.Timber
+import javax.inject.Inject
 
 class TabMeasureFragment: BaseFragment<FragmentTabMeasureBinding>() {
 
     override fun getLayoutId(): Int = R.layout.fragment_tab_measure
 
+    @Inject
+    lateinit var viewModelFactory: ViewModelProvider.Factory
+
+    private val viewModel by viewModels<TabMeasureFragmentViewModel> { viewModelFactory }
+
+    override fun onAttach(context: Context) {
+        super.onAttach(context)
+        TabMeasureFragmentComponent.injectFragment(this)
+        Timber.d("onAttach")
+    }
+
     override fun subscribeUi() {
 
     }

+ 27 - 1
feature_measure/src/main/res/layout/fragment_tab_measure.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<layout xmlns:android="http://schemas.android.com/apk/res/android">
+<layout xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:android="http://schemas.android.com/apk/res/android">
 
     <data>
 
@@ -9,5 +10,30 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
+        <com.google.android.material.tabs.TabLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent">
+
+            <com.google.android.material.tabs.TabItem
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="Monday" />
+
+            <com.google.android.material.tabs.TabItem
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="Tuesday" />
+
+            <com.google.android.material.tabs.TabItem
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="Wednesday" />
+        </com.google.android.material.tabs.TabLayout>
+
     </androidx.constraintlayout.widget.ConstraintLayout>
+
 </layout>

+ 1 - 2
feature_person/src/main/java/com/mrozon/feature_person/presentation/ListPersonFragment.kt

@@ -65,8 +65,7 @@ class ListPersonFragment : BaseFragment<FragmentListPersonBinding>() {
         adapter = ListPersonAdapter(object : ListPersonAdapter.ListPersonClickListener {
             override fun onClick(person: Person) {
                 Timber.d("click to ${person.name}")
-                //TODO add logic for click item
-                show("will be soon))")
+                navigator.navigateToMeasureForPerson(findNavController(), person.id)
             }
 
             override fun onLongClick(person: Person) {