diff --git a/app/src/main/kotlin/com/tailoredapps/template/ui/base/navigator/ActivityNavigator.kt b/app/src/main/kotlin/com/tailoredapps/template/ui/base/navigator/ActivityNavigator.kt index e42a04a..f9d07e6 100644 --- a/app/src/main/kotlin/com/tailoredapps/template/ui/base/navigator/ActivityNavigator.kt +++ b/app/src/main/kotlin/com/tailoredapps/template/ui/base/navigator/ActivityNavigator.kt @@ -61,46 +61,54 @@ open class ActivityNavigator(protected val activity: FragmentActivity) : Navigat startActivityInternal(Intent(action, uri)) } - override fun startActivity(activityClass: Class, adaptIntentFun: (Intent.() -> Unit)?) { - startActivityInternal(activityClass, null, adaptIntentFun) + override fun startActivity(activityClass: Class) { + startActivityInternal(activityClass, null) } - override fun startActivityForResult(activityClass: Class, requestCode: Int, adaptIntentFun: (Intent.() -> Unit)?) { - startActivityInternal(activityClass, requestCode, adaptIntentFun) + override fun startActivityForResult(intent: Intent, requestCode: Int) { + startActivityInternal(intent, requestCode) } - override fun startActivityWithTransition(activityClass: Class, vararg transitionViews: Pair, adaptIntentFun: (Intent.() -> Unit)?) { - startActivityWithTransitionInternal(activityClass, transitionViews, adaptIntentFun) + override fun startActivityForResult(activityClass: Class, requestCode: Int) { + startActivityInternal(activityClass, requestCode) } - override fun startActivityWithTransition(activityClass: Class, vararg transitionViews: View, adaptIntentFun: (Intent.() -> Unit)?) { - val mapped = transitionViews.map { - val transitionName = ViewCompat.getTransitionName(it) ?: throw IllegalArgumentException("View with ID \"${it.resources.getResourceEntryName(it.id)}\" must have a transitionName") - Pair(it, transitionName) - }.toTypedArray() + override fun startActivityWithTransition(activityClass: Class, vararg transitionViews: Pair) { + startActivityWithTransitionInternal(Intent(activity, activityClass), transitionViews) + } - startActivityWithTransitionInternal(activityClass, mapped, adaptIntentFun) + override fun startActivityWithTransition(activityClass: Class, vararg transitionViews: View) { + startActivityWithTransition(Intent(activity, activityClass), *transitionViews) } - private fun startActivityWithTransitionInternal(activityClass: Class, transitionViews: Array>, adaptIntentFun: (Intent.() -> Unit)?) { - val intent = Intent(activity, activityClass) + override fun startActivityWithTransition(intent: Intent, vararg transitionViews: Pair) { + startActivityWithTransitionInternal(intent, transitionViews) + } + override fun startActivityWithTransition(intent: Intent, vararg transitionViews: View) { + val mapped = transitionViews.map { + val transitionName = ViewCompat.getTransitionName(it) ?: throw IllegalArgumentException("View with ID \"${it.resources.getResourceEntryName(it.id)}\" must have a transitionName") + Pair(it, transitionName) + }.toTypedArray() + + startActivityWithTransitionInternal(intent, mapped) + } + + private fun startActivityWithTransitionInternal(intent: Intent, transitionViews: Array>) { val mapped = transitionViews .map { android.support.v4.util.Pair(it.first, it.second) } .toTypedArray() val options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, *mapped).toBundle() - startActivityInternal(intent, null, adaptIntentFun, options) + startActivityInternal(intent, null, options) } - private fun startActivityInternal(activityClass: Class, requestCode: Int?, adaptIntentFun: (Intent.() -> Unit)?) { + private fun startActivityInternal(activityClass: Class, requestCode: Int?) { val intent = Intent(activity, activityClass) - startActivityInternal(intent, requestCode, adaptIntentFun) + startActivityInternal(intent, requestCode) } - protected open fun startActivityInternal(intent: Intent, requestCode: Int? = null, adaptIntentFun: (Intent.() -> Unit)? = null, options: Bundle? = null) { - adaptIntentFun?.invoke(intent) - + protected open fun startActivityInternal(intent: Intent, requestCode: Int? = null, options: Bundle? = null) { if (requestCode != null) { ActivityCompat.startActivityForResult(activity, intent, requestCode, options) } else { diff --git a/app/src/main/kotlin/com/tailoredapps/template/ui/base/navigator/ChildFragmentNavigator.kt b/app/src/main/kotlin/com/tailoredapps/template/ui/base/navigator/ChildFragmentNavigator.kt index dba8764..e58bc1e 100644 --- a/app/src/main/kotlin/com/tailoredapps/template/ui/base/navigator/ChildFragmentNavigator.kt +++ b/app/src/main/kotlin/com/tailoredapps/template/ui/base/navigator/ChildFragmentNavigator.kt @@ -28,9 +28,7 @@ class ChildFragmentNavigator(private val fragment: Fragment) : ActivityNavigator override val fragmentManager: FragmentManager? get() = fragment.fragmentManager private val childFragmentManager get() = fragment.childFragmentManager - override fun startActivityInternal(intent: Intent, requestCode: Int?, adaptIntentFun: (Intent.() -> Unit)?, options: Bundle?) { - adaptIntentFun?.invoke(intent) - + override fun startActivityInternal(intent: Intent, requestCode: Int?, options: Bundle?) { if (requestCode != null) { fragment.startActivityForResult(intent, requestCode, options) } else { diff --git a/app/src/main/kotlin/com/tailoredapps/template/ui/base/navigator/Navigator.kt b/app/src/main/kotlin/com/tailoredapps/template/ui/base/navigator/Navigator.kt index e3c10ba..096fe8e 100644 --- a/app/src/main/kotlin/com/tailoredapps/template/ui/base/navigator/Navigator.kt +++ b/app/src/main/kotlin/com/tailoredapps/template/ui/base/navigator/Navigator.kt @@ -40,12 +40,15 @@ interface Navigator { fun startActivity(intent: Intent) fun startActivity(action: String, uri: Uri? = null) - fun startActivity(activityClass: Class, adaptIntentFun: (Intent.() -> Unit)? = null) + fun startActivity(activityClass: Class) - fun startActivityWithTransition(activityClass: Class, vararg transitionViews: Pair, adaptIntentFun: (Intent.() -> Unit)? = null) - fun startActivityWithTransition(activityClass: Class, vararg transitionViews: View, adaptIntentFun: (Intent.() -> Unit)? = null) + fun startActivityWithTransition(intent: Intent, vararg transitionViews: Pair) + fun startActivityWithTransition(activityClass: Class, vararg transitionViews: Pair) + fun startActivityWithTransition(intent: Intent, vararg transitionViews: View) + fun startActivityWithTransition(activityClass: Class, vararg transitionViews: View) - fun startActivityForResult(activityClass: Class, requestCode: Int, adaptIntentFun: (Intent.() -> Unit)? = null) + fun startActivityForResult(intent: Intent, requestCode: Int) + fun startActivityForResult(activityClass: Class, requestCode: Int) fun showDialogFragment(dialog: T, fragmentTag: String = dialog::class.java.name)