Selaa lähdekoodia

fix navigation
add options menu

MrOzOn 5 vuotta sitten
vanhempi
commit
b98caf1bdb

+ 1 - 1
app/src/main/java/com/mrozon/healthdiary/navigation/ListMeasureNavigatorImpl.kt

@@ -13,6 +13,6 @@ class ListMeasureNavigatorImpl @Inject constructor()
 
     override fun navigateToEditMeasure(navController: NavController, title: String, id: Long) {
         val bundle = bundleOf("title" to title, "id" to id)
-        navController.navigate(R.id.action_listMeasureFragment_to_editMeasureFragment, bundle)
+        navController.navigate(R.id.action_tabMeasureFragment_to_editMeasureFragment, bundle)
     }
 }

+ 5 - 1
app/src/main/res/navigation/nav_graph.xml

@@ -139,7 +139,11 @@
         android:id="@+id/tabMeasureFragment"
         android:name="com.mrozon.feature_measure.presentation.TabMeasureFragment"
         tools:layout="@layout/fragment_tab_measure"
-        android:label="TabMeasureFragment" />
+        android:label="TabMeasureFragment" >
+        <action
+            android:id="@+id/action_tabMeasureFragment_to_editMeasureFragment"
+            app:destination="@id/editMeasureFragment" />
+    </fragment>
 
     <fragment
         android:id="@+id/listMeasureFragment"

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

@@ -6,4 +6,6 @@ interface NavigatorProvider {
     fun provideRegistrationNavigator(): RegistrationNavigator
     fun provideListPersonNavigator(): ListPersonNavigator
     fun provideEditPersonNavigator(): EditPersonNavigator
+    fun provideListMeasureNavigator(): ListMeasureNavigator
+    fun provideEditMeasureNavigator(): EditMeasureNavigator
 }

+ 32 - 0
feature_measure/src/main/java/com/mrozon/feature_measure/presentation/EditMeasureFragment.kt

@@ -1,12 +1,18 @@
 package com.mrozon.feature_measure.presentation
 
 import android.content.Context
+import android.os.Bundle
+import android.view.*
 import androidx.fragment.app.viewModels
 import androidx.lifecycle.ViewModelProvider
 import com.mrozon.feature_measure.R
 import com.mrozon.feature_measure.databinding.FragmentEditMeasureBinding
 import com.mrozon.feature_measure.di.TabMeasureFragmentComponent
 import com.mrozon.utils.base.BaseFragment
+import com.mrozon.utils.extension.hideKeyboard
+import com.mrozon.utils.extension.isActiveNetwork
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.FlowPreview
 import timber.log.Timber
 import javax.inject.Inject
 
@@ -24,6 +30,32 @@ class EditMeasureFragment: BaseFragment<FragmentEditMeasureBinding>() {
         TabMeasureFragmentComponent.injectFragment(this)
     }
 
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        setHasOptionsMenu(true)
+        return super.onCreateView(inflater, container, savedInstanceState)
+    }
+
+    @ExperimentalCoroutinesApi
+    @FlowPreview
+    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
+        inflater.inflate(R.menu.add_measure_menu, menu)
+        return super.onCreateOptionsMenu(menu, inflater)
+    }
+
+    @ExperimentalCoroutinesApi
+    override fun onOptionsItemSelected(item: MenuItem): Boolean {
+        hideKeyboard()
+        if (!isActiveNetwork()){
+            showError(getString(R.string.network_inactive))
+            return false
+        }
+        return false
+    }
+
 
     override fun subscribeUi() {
 

+ 9 - 1
feature_measure/src/main/java/com/mrozon/feature_measure/presentation/ListMeasureFragment.kt

@@ -12,6 +12,8 @@ import androidx.recyclerview.widget.DividerItemDecoration
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.mrozon.core_api.entity.Measure
+import com.mrozon.core_api.navigation.ListMeasureNavigator
+import com.mrozon.core_api.navigation.ListPersonNavigator
 import com.mrozon.feature_measure.R
 import com.mrozon.feature_measure.databinding.FragmentListMeasureBinding
 import com.mrozon.feature_measure.di.TabMeasureFragmentComponent
@@ -39,6 +41,9 @@ class ListMeasureFragment : BaseFragment<FragmentListMeasureBinding>() {
         }
     }
 
+    @Inject
+    lateinit var navigator: ListMeasureNavigator
+
     private var adapter: ListMeasureAdapter? = null
 
     override fun onCreateView(
@@ -57,6 +62,9 @@ class ListMeasureFragment : BaseFragment<FragmentListMeasureBinding>() {
             layoutManager = manager
             addItemDecoration(DividerItemDecoration(requireContext(),DividerItemDecoration.VERTICAL))
         }
+        binding?.fabAddMeasure?.setOnClickListener {
+            navigator.navigateToEditMeasure(findNavController(),getString(R.string.add_measure),0)
+        }
     }
 
     override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
@@ -115,7 +123,7 @@ class ListMeasureFragment : BaseFragment<FragmentListMeasureBinding>() {
                         adapter = ListMeasureAdapter(measureType!!, object:
                             ListMeasureAdapter.ListMeasureClickListener {
                             override fun onClick(measure: Measure) {
-                                //TODO sfjkdsh
+                                //edit measure
                             }
                         })
                         binding?.rvMeasure?.adapter = adapter

+ 5 - 0
feature_measure/src/main/res/drawable/ic_baseline_delete_outline_24.xml

@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#FFFFFF"
+    android:viewportHeight="24" android:viewportWidth="24"
+    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@android:color/white" android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2L18,7L6,7v12zM8,9h8v10L8,19L8,9zM15.5,4l-1,-1h-5l-1,1L5,4v2h14L19,4z"/>
+</vector>

+ 5 - 0
feature_measure/src/main/res/drawable/ic_check_white_24dp.xml

@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#FFFFFF"
+    android:viewportHeight="24.0" android:viewportWidth="24.0"
+    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#FF000000" android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
+</vector>

+ 16 - 0
feature_measure/src/main/res/menu/add_measure_menu.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:id="@+id/deletePerson"
+        android:icon="@drawable/ic_baseline_delete_outline_24"
+        android:title="@string/delete_measure"
+        android:visible="false"
+        app:showAsAction="ifRoom" />
+
+    <item
+        android:id="@+id/addPerson"
+        android:icon="@drawable/ic_check_white_24dp"
+        android:title="@string/save_measure"
+        app:showAsAction="always" />
+</menu>

+ 3 - 0
feature_measure/src/main/res/values/strings.xml

@@ -3,4 +3,7 @@
     <string name="ivTimeOfDay">Time of day</string>
     <string name="ivMeasureComment">comment</string>
     <string name="refresh">Refresh</string>
+    <string name="add_measure">Add measure</string>
+    <string name="delete_measure">Delete measure</string>
+    <string name="save_measure">Save measure</string>
 </resources>