- Calender view page added

- migrated to tabbed bottom bar
 - update and clear filters fixed
 - Title set for child fragments
This commit is contained in:
2023-09-14 11:43:09 +01:00
parent 6e41d78d60
commit 5c0ddcae5d
3 changed files with 16 additions and 11 deletions

View File

@@ -15,7 +15,7 @@ import org.kodein.di.android.x.kodein
import org.kodein.di.generic.instance import org.kodein.di.generic.instance
import java.io.IOException import java.io.IOException
@Suppress("EmptyMethod", "EmptyMethod") @Suppress("EmptyMethod")
abstract class ChildFragment<V : BaseViewModel>(@LayoutRes contentLayoutId: Int) : abstract class ChildFragment<V : BaseViewModel>(@LayoutRes contentLayoutId: Int) :
Fragment(contentLayoutId), KodeinAware { Fragment(contentLayoutId), KodeinAware {
@@ -24,10 +24,12 @@ abstract class ChildFragment<V : BaseViewModel>(@LayoutRes contentLayoutId: Int)
lateinit var viewModel: V lateinit var viewModel: V
private val parent by lazy { requireParentFragment().requireParentFragment() }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
viewModel = viewModel =
ViewModelProvider(requireParentFragment().requireParentFragment(), factory)[getGenericClassAt<V>(0).java] ViewModelProvider(parent, factory)[getGenericClassAt<V>(0).java]
configureObserver() configureObserver()
} }
@@ -58,11 +60,14 @@ abstract class ChildFragment<V : BaseViewModel>(@LayoutRes contentLayoutId: Int)
fun navigateParent(navArg: Any) { fun navigateParent(navArg: Any) {
val fragment = requireParentFragment().requireParentFragment()
when(navArg) { when(navArg) {
is Int -> (fragment).navigateTo(navArg) is Int -> (parent).navigateTo(navArg)
is NavDirections -> (fragment).navigateTo(navArg) is NavDirections -> (parent).navigateTo(navArg)
else -> { throw IOException("${navArg::class} is not a valid navigation argment") } else -> { throw IOException("${navArg::class} is not a valid navigation argment") }
} }
} }
fun setTitle(title: String) {
(parent as BaseFragment<*>).setTitle(title)
}
} }

View File

@@ -64,16 +64,16 @@ class FragmentMain : BaseFragment<MainViewModel>(R.layout.fragment_main) {
val navController = navHost.navController val navController = navHost.navController
navController.setGraph(R.navigation.home_navigation) navController.setGraph(R.navigation.home_navigation)
navView.setOnNavigationItemSelectedListener {
setTitle(it.title.toString())
true
}
navView.setupWithNavController(navController) navView.setupWithNavController(navController)
viewModel.getBottomBarState()?.let { viewModel.getBottomBarState()?.let {
navView.selectedItemId = it navView.selectedItemId = it
} }
navController.addOnDestinationChangedListener { _, destination, _ ->
setTitle(destination.label.toString())
}
view.findViewById<FloatingActionButton>(R.id.fab1).setOnClickListener { view.findViewById<FloatingActionButton>(R.id.fab1).setOnClickListener {
navigateTo(R.id.main_to_addItem) navigateTo(R.id.main_to_addItem)
} }

View File

@@ -7,11 +7,11 @@
<fragment <fragment
android:id="@+id/nav_list" android:id="@+id/nav_list"
android:name="com.appttude.h_mal.farmr.ui.FragmentList" android:name="com.appttude.h_mal.farmr.ui.FragmentList"
android:label="fragment_list" android:label="@string/text_label_1"
tools:layout="@layout/fragment_list" /> tools:layout="@layout/fragment_list" />
<fragment <fragment
android:id="@+id/nav_calendar" android:id="@+id/nav_calendar"
android:name="com.appttude.h_mal.farmr.ui.CalendarFragment" android:name="com.appttude.h_mal.farmr.ui.CalendarFragment"
android:label="fragment_calendar" android:label="@string/text_label_2"
tools:layout="@layout/fragment_calendar" /> tools:layout="@layout/fragment_calendar" />
</navigation> </navigation>