From bd9accacaa3590dc1a9b15db84167e2049bc26ce Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 4 Jun 2020 19:30:45 +0300 Subject: [PATCH] view controller fixes --- bottom-navigation-viewcontroller/build.gradle | 5 ++-- .../BottomNavigationActivity.kt | 2 +- .../BottomNavigationController.kt | 2 +- .../BottomNavigationFragment.kt | 2 +- .../NavigationContainerFragment.kt | 2 +- .../NavigationTab.kt | 2 +- .../viewmodel/LifecycleViewModelProviders.kt | 26 ++++++++++++++++--- 7 files changed, 30 insertions(+), 11 deletions(-) diff --git a/bottom-navigation-viewcontroller/build.gradle b/bottom-navigation-viewcontroller/build.gradle index cdae20e..8a5beda 100644 --- a/bottom-navigation-viewcontroller/build.gradle +++ b/bottom-navigation-viewcontroller/build.gradle @@ -20,8 +20,9 @@ android { } dependencies { - api project(":navigation-viewcontroller") - api project(":bottom-navigation-base") + implementation project(":navigation-base") + implementation project(":navigation-viewcontroller") + implementation project(":bottom-navigation-base") implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" diff --git a/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/BottomNavigationActivity.kt b/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/BottomNavigationActivity.kt index a9135fc..6361f08 100644 --- a/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/BottomNavigationActivity.kt +++ b/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/BottomNavigationActivity.kt @@ -1,6 +1,6 @@ package ru.touchin.roboswag.bottom_navigation_viewcontroller -import ru.touchin.roboswag.bottom_navigation_fragment.BaseBottomNavigationActivity +import ru.touchin.roboswag.bottom_navigation_base.BaseBottomNavigationActivity import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewControllerNavigation abstract class BottomNavigationActivity : diff --git a/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/BottomNavigationController.kt b/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/BottomNavigationController.kt index 6597ae3..babcf94 100644 --- a/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/BottomNavigationController.kt +++ b/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/BottomNavigationController.kt @@ -6,7 +6,7 @@ import androidx.annotation.IdRes import androidx.annotation.LayoutRes import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager -import ru.touchin.roboswag.bottom_navigation_fragment.BaseBottomNavigationController +import ru.touchin.roboswag.bottom_navigation_base.BaseBottomNavigationController import ru.touchin.roboswag.navigation_viewcontroller.fragments.ViewControllerFragment class BottomNavigationController( diff --git a/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/BottomNavigationFragment.kt b/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/BottomNavigationFragment.kt index 8a2f3fc..18d1643 100644 --- a/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/BottomNavigationFragment.kt +++ b/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/BottomNavigationFragment.kt @@ -1,6 +1,6 @@ package ru.touchin.roboswag.bottom_navigation_viewcontroller -import ru.touchin.roboswag.bottom_navigation_fragment.BaseBottomNavigationFragment +import ru.touchin.roboswag.bottom_navigation_base.BaseBottomNavigationFragment abstract class BottomNavigationFragment : BaseBottomNavigationFragment() { diff --git a/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/NavigationContainerFragment.kt b/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/NavigationContainerFragment.kt index c70e1fd..bfffaf4 100644 --- a/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/NavigationContainerFragment.kt +++ b/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/NavigationContainerFragment.kt @@ -1,7 +1,7 @@ package ru.touchin.roboswag.bottom_navigation_viewcontroller import android.os.Parcelable -import ru.touchin.roboswag.bottom_navigation_fragment.BaseNavigationContainerFragment +import ru.touchin.roboswag.bottom_navigation_base.BaseNavigationContainerFragment import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewController import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewControllerNavigation diff --git a/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/NavigationTab.kt b/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/NavigationTab.kt index 7ee96ed..bc10917 100644 --- a/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/NavigationTab.kt +++ b/bottom-navigation-viewcontroller/src/main/java/ru/touchin/roboswag/bottom_navigation_viewcontroller/NavigationTab.kt @@ -1,7 +1,7 @@ package ru.touchin.roboswag.bottom_navigation_viewcontroller import android.os.Parcelable -import ru.touchin.roboswag.bottom_navigation_fragment.BaseNavigationTab +import ru.touchin.roboswag.bottom_navigation_base.BaseNavigationTab import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewController class NavigationTab( diff --git a/lifecycle-viewcontroller/src/main/java/ru/touchin/lifecycle_viewcontroller/viewmodel/LifecycleViewModelProviders.kt b/lifecycle-viewcontroller/src/main/java/ru/touchin/lifecycle_viewcontroller/viewmodel/LifecycleViewModelProviders.kt index 7d93a36..22d7448 100644 --- a/lifecycle-viewcontroller/src/main/java/ru/touchin/lifecycle_viewcontroller/viewmodel/LifecycleViewModelProviders.kt +++ b/lifecycle-viewcontroller/src/main/java/ru/touchin/lifecycle_viewcontroller/viewmodel/LifecycleViewModelProviders.kt @@ -2,13 +2,34 @@ package ru.touchin.lifecycle_viewcontroller.viewmodel import android.app.Activity import androidx.fragment.app.Fragment +import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders import ru.touchin.lifecycle.viewmodel.BaseLifecycleViewModelProviders import ru.touchin.lifecycle.viewmodel.ViewModelFactoryProvider import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewController object LifecycleViewModelProviders : BaseLifecycleViewModelProviders() { + /** + * Creates a {@link ViewModelProvider}, which retains ViewModels while a scope of given + * {@code lifecycleOwner} is alive. More detailed explanation is in {@link ViewModel}. + *

+ * It uses the given {@link Factory} to instantiate new ViewModels. + * + * @param lifecycleOwner a lifecycle owner, in whose scope ViewModels should be retained (ViewController, Fragment, Activity) + * @param factory a {@code Factory} to instantiate new ViewModels + * @return a ViewModelProvider instance + */ + override fun of( + lifecycleOwner: LifecycleOwner, + factory: ViewModelProvider.Factory + ): ViewModelProvider = + when (lifecycleOwner) { + is ViewController<*, *> -> ViewModelProviders.of(lifecycleOwner.fragment, factory) + else -> super.of(lifecycleOwner, factory) + } + /** * Returns ViewModelProvider.Factory instance from current lifecycleOwner. * Search #ViewModelFactoryProvider are produced according to priorities: @@ -20,11 +41,8 @@ object LifecycleViewModelProviders : BaseLifecycleViewModelProviders() { */ override fun getViewModelFactory(provider: Any): ViewModelProvider.Factory = when (provider) { - is ViewModelFactoryProvider -> provider.viewModelFactory is ViewController<*, *> -> getViewModelFactory(provider.fragment) - is Fragment -> getViewModelFactory(provider.parentFragment ?: provider.requireActivity()) - is Activity -> getViewModelFactory(provider.application) - else -> throw IllegalArgumentException("View model factory not found.") + else -> super.getViewModelFactory(provider) } }