diff --git a/navigation/RELEASE_NOTES.md b/navigation/RELEASE_NOTES.md index c2ae3b374..ce43c4d77 100644 --- a/navigation/RELEASE_NOTES.md +++ b/navigation/RELEASE_NOTES.md @@ -8,4 +8,5 @@ * ANDDEP-1110 Add removeAll and removeUntil fragment animations * Fix RemoveUntil command execution for single removal * Add methods to listen for changes of tab head in TabFragmentNavigator -* Update removeUntil and removeAll animations: now they inherit animations from the first fragment of the removing bunch. \ No newline at end of file +* Update removeUntil and removeAll animations: now they inherit animations from the first fragment of the removing bunch. +* ANDDEP-1104 added `StyledAnimations` for dialog appear animation \ No newline at end of file diff --git a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/DefaultAnimations.kt b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/DefaultAnimations.kt index 77acf9e7f..e4b2af738 100644 --- a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/DefaultAnimations.kt +++ b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/DefaultAnimations.kt @@ -32,11 +32,8 @@ object DefaultAnimations { /** * Animations to be executed for each * [ru.surfstudio.android.navigation.command.dialog.base.DialogNavigationCommand]. - * - * Warning! Dialog animations are not yet implemented. */ - @Deprecated("Dialog animations are not yet implemented.") - var dialog: Animations = NoResourceAnimations + var dialog: Animations = EmptyResourceAnimations /** * Animations to be executed for each WidgetNavigationCommand diff --git a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/styled/StyledAnimations.kt b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/styled/StyledAnimations.kt new file mode 100644 index 000000000..018178514 --- /dev/null +++ b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/styled/StyledAnimations.kt @@ -0,0 +1,14 @@ +package ru.surfstudio.android.navigation.animation.styled + +import androidx.annotation.StyleRes +import ru.surfstudio.android.navigation.animation.Animations +import java.io.Serializable + +/** + * Style resources based animations + * + * @param style style resource + */ +data class StyledAnimations( + @StyleRes val style: Int +) : Animations, Serializable \ No newline at end of file diff --git a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/utils/ActivityAnimationSupplier.kt b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/utils/ActivityAnimationSupplier.kt index 89826dad2..59ffdfe08 100644 --- a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/utils/ActivityAnimationSupplier.kt +++ b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/utils/ActivityAnimationSupplier.kt @@ -8,6 +8,7 @@ import ru.surfstudio.android.navigation.animation.Animations import ru.surfstudio.android.navigation.animation.resource.BaseResourceAnimations import ru.surfstudio.android.navigation.animation.set.SetAnimations import ru.surfstudio.android.navigation.animation.shared.SharedElementAnimations +import ru.surfstudio.android.navigation.animation.styled.StyledAnimations /** * Supplier which is responsible for inflating Activity transition with animations. @@ -38,6 +39,8 @@ open class ActivityAnimationSupplier { setSharedElementAnimations(activity, options, animations) is BaseResourceAnimations -> setResourceAnimations(activity, options, animations) + is StyledAnimations -> + throw UnsupportedOperationException("StyledAnimations is only for dialogs") else -> null } } @@ -51,11 +54,11 @@ open class ActivityAnimationSupplier { * * @return [Bundle] options with animations */ - fun setResourceAnimations( + private fun setResourceAnimations( context: Context, options: Bundle?, animations: BaseResourceAnimations - ): Bundle? { + ): Bundle { val resourceAnimations = ActivityOptionsCompat.makeCustomAnimation( context, animations.enterAnimation, @@ -75,11 +78,11 @@ open class ActivityAnimationSupplier { * * @return [Bundle] options with animations */ - fun setSharedElementAnimations( + private fun setSharedElementAnimations( activity: Activity, options: Bundle?, animations: SharedElementAnimations - ): Bundle? { + ): Bundle { val sharedElements = animations.sharedElements .map { androidx.core.util.Pair(it.sharedView, it.transitionName) } val resourceAnimations = diff --git a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/utils/DialogAnimationSupplier.kt b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/utils/DialogAnimationSupplier.kt new file mode 100644 index 000000000..ac8b1cc14 --- /dev/null +++ b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/utils/DialogAnimationSupplier.kt @@ -0,0 +1,30 @@ +package ru.surfstudio.android.navigation.animation.utils + +import androidx.fragment.app.DialogFragment +import ru.surfstudio.android.navigation.animation.Animations +import ru.surfstudio.android.navigation.animation.styled.StyledAnimations + +/** + * Supplier which is responsible for inflating DialogFragments with animations. + */ +open class DialogAnimationSupplier { + + /** + * Supplies animations to [DialogFragment] + * + * @param dialog dialog which animates + * @param animations animations object, only [StyledAnimations] support + */ + fun supplyWithAnimations(dialog: DialogFragment, animations: Animations) { + if (animations is StyledAnimations) { + setResourceAnimations(dialog, animations) + } + } + + /** + * Sets windowAnimation to [DialogFragment]'s dialog + */ + private fun setResourceAnimations(dialogFragment: DialogFragment, animations: StyledAnimations) { + dialogFragment.dialog?.window?.setWindowAnimations(animations.style) + } +} \ No newline at end of file diff --git a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/utils/FragmentAnimationSupplier.kt b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/utils/FragmentAnimationSupplier.kt index ef74f6a49..201d003e1 100644 --- a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/utils/FragmentAnimationSupplier.kt +++ b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/animation/utils/FragmentAnimationSupplier.kt @@ -5,6 +5,7 @@ import ru.surfstudio.android.navigation.animation.Animations import ru.surfstudio.android.navigation.animation.resource.BaseResourceAnimations import ru.surfstudio.android.navigation.animation.set.SetAnimations import ru.surfstudio.android.navigation.animation.shared.SharedElementAnimations +import ru.surfstudio.android.navigation.animation.styled.StyledAnimations /** * Supplier, which is responsible for inflating [FragmentTransaction] with animations. @@ -25,6 +26,9 @@ open class FragmentAnimationSupplier { setResourceAnimations(transaction, animations, false) is SharedElementAnimations -> setSharedElementAnimations(transaction, animations) + is StyledAnimations -> + throw UnsupportedOperationException("StyledAnimations is only for dialogs") + } return transaction } diff --git a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/command/dialog/Dismiss.kt b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/command/dialog/Dismiss.kt index 2582aa1e7..bc3d007ad 100644 --- a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/command/dialog/Dismiss.kt +++ b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/command/dialog/Dismiss.kt @@ -2,14 +2,13 @@ package ru.surfstudio.android.navigation.command.dialog import ru.surfstudio.android.navigation.animation.Animations import ru.surfstudio.android.navigation.animation.DefaultAnimations -import ru.surfstudio.android.navigation.animation.resource.NoResourceAnimations import ru.surfstudio.android.navigation.command.dialog.base.DialogNavigationCommand import ru.surfstudio.android.navigation.route.dialog.DialogRoute /** * Dismiss dialog from the screen */ -data class Dismiss(override val route: DialogRoute) : DialogNavigationCommand { - - override val animations: Animations = DefaultAnimations.dialog -} \ No newline at end of file +data class Dismiss( + override val route: DialogRoute, + override val animations: Animations = DefaultAnimations.dialog +) : DialogNavigationCommand \ No newline at end of file diff --git a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/command/dialog/Show.kt b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/command/dialog/Show.kt index 0c2c39a10..3aeea0c58 100644 --- a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/command/dialog/Show.kt +++ b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/command/dialog/Show.kt @@ -2,15 +2,13 @@ package ru.surfstudio.android.navigation.command.dialog import ru.surfstudio.android.navigation.animation.Animations import ru.surfstudio.android.navigation.animation.DefaultAnimations -import ru.surfstudio.android.navigation.animation.resource.EmptyResourceAnimations -import ru.surfstudio.android.navigation.animation.resource.NoResourceAnimations import ru.surfstudio.android.navigation.command.dialog.base.DialogNavigationCommand import ru.surfstudio.android.navigation.route.dialog.DialogRoute /** * Show dialog on the screen */ -data class Show(override val route: DialogRoute) : DialogNavigationCommand { - - override val animations: Animations = DefaultAnimations.dialog -} \ No newline at end of file +data class Show( + override val route: DialogRoute, + override val animations: Animations = DefaultAnimations.dialog +) : DialogNavigationCommand \ No newline at end of file diff --git a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/executor/screen/dialog/DialogCommandExecutor.kt b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/executor/screen/dialog/DialogCommandExecutor.kt index a23a18012..897574b45 100644 --- a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/executor/screen/dialog/DialogCommandExecutor.kt +++ b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/executor/screen/dialog/DialogCommandExecutor.kt @@ -22,8 +22,8 @@ open class DialogCommandExecutor( override fun execute(command: DialogNavigationCommand) { when (command) { - is Show -> dialogNavigator.show(command.route) - is Dismiss -> dialogNavigator.dismiss(command.route) + is Show -> dialogNavigator.show(command.route, command.animations) + is Dismiss -> dialogNavigator.dismiss(command.route, command.animations) } } diff --git a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/navigator/dialog/DialogNavigator.kt b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/navigator/dialog/DialogNavigator.kt index b19694213..82d183df8 100644 --- a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/navigator/dialog/DialogNavigator.kt +++ b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/navigator/dialog/DialogNavigator.kt @@ -2,19 +2,25 @@ package ru.surfstudio.android.navigation.navigator.dialog import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.DialogFragment +import ru.surfstudio.android.navigation.animation.Animations +import ru.surfstudio.android.navigation.animation.utils.DialogAnimationSupplier import ru.surfstudio.android.navigation.route.dialog.DialogRoute class DialogNavigator(val activity: AppCompatActivity) : DialogNavigatorInterface { - override fun show(route: DialogRoute) { + private var animationSupplier = DialogAnimationSupplier() + + override fun show(route: DialogRoute, animations: Animations) { val tag = route.getId() val dialog = route.createDialog() - dialog.show(activity.supportFragmentManager, tag) + dialog.showNow(activity.supportFragmentManager, tag) + animationSupplier.supplyWithAnimations(dialog, animations) } - override fun dismiss(route: DialogRoute) { + override fun dismiss(route: DialogRoute, animations: Animations) { val tag = route.getId() val dialog = activity.supportFragmentManager.findFragmentByTag(tag) as? DialogFragment + dialog?.let { animationSupplier.supplyWithAnimations(it, animations) } dialog?.dismiss() } } \ No newline at end of file diff --git a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/navigator/dialog/DialogNavigatorInterface.kt b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/navigator/dialog/DialogNavigatorInterface.kt index 69d1c1838..f91f0fc22 100644 --- a/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/navigator/dialog/DialogNavigatorInterface.kt +++ b/navigation/lib-navigation/src/main/java/ru/surfstudio/android/navigation/navigator/dialog/DialogNavigatorInterface.kt @@ -1,10 +1,11 @@ package ru.surfstudio.android.navigation.navigator.dialog +import ru.surfstudio.android.navigation.animation.Animations import ru.surfstudio.android.navigation.route.dialog.DialogRoute interface DialogNavigatorInterface { - fun show(route: DialogRoute) + fun show(route: DialogRoute, animations: Animations) - fun dismiss(route: DialogRoute) + fun dismiss(route: DialogRoute, animations: Animations) } \ No newline at end of file diff --git a/navigation/sample-standard/src/main/AndroidManifest.xml b/navigation/sample-standard/src/main/AndroidManifest.xml index 23a802605..2cd352af2 100644 --- a/navigation/sample-standard/src/main/AndroidManifest.xml +++ b/navigation/sample-standard/src/main/AndroidManifest.xml @@ -43,6 +43,10 @@ android:name=".screen.main.MainActivityView" android:label="Main Activity" /> + + \ No newline at end of file diff --git a/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsActivityView.kt b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsActivityView.kt new file mode 100644 index 000000000..360be8e95 --- /dev/null +++ b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsActivityView.kt @@ -0,0 +1,29 @@ +package ru.surfstudio.android.navigation.sample_standard.screen.dialogs + +import android.os.Bundle +import android.os.PersistableBundle +import com.jakewharton.rxbinding2.view.clicks +import kotlinx.android.synthetic.main.activity_dialogs.* +import ru.surfstudio.android.core.mvp.binding.rx.ui.BaseRxActivityView +import ru.surfstudio.android.navigation.sample_standard.R +import javax.inject.Inject + +class DialogsActivityView : BaseRxActivityView() { + + @Inject + lateinit var bm: DialogsBindModel + + override fun createConfigurator() = DialogsScreenConfigurator(intent) + + override fun getContentView(): Int = R.layout.activity_dialogs + + override fun getScreenName(): String = "Dialogs" + + override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?, viewRecreated: Boolean) { + super.onCreate(savedInstanceState, persistentState, viewRecreated) + + dialogs_default_btn.clicks() bindTo { bm.openDialogButtonClicked.accept() } + dialogs_fade_btn.clicks() bindTo { bm.openDialogWithFadeButtonClicked.accept() } + dialogs_slide_btn.clicks() bindTo { bm.openDialogWithSlideButtonClicked.accept() } + } +} \ No newline at end of file diff --git a/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsBindModel.kt b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsBindModel.kt new file mode 100644 index 000000000..dd6a32e74 --- /dev/null +++ b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsBindModel.kt @@ -0,0 +1,12 @@ +package ru.surfstudio.android.navigation.sample_standard.screen.dialogs + +import ru.surfstudio.android.core.mvp.binding.rx.relation.mvp.Action +import ru.surfstudio.android.dagger.scope.PerScreen +import javax.inject.Inject + +@PerScreen +class DialogsBindModel @Inject constructor() { + val openDialogButtonClicked = Action() + val openDialogWithFadeButtonClicked = Action() + val openDialogWithSlideButtonClicked = Action() +} \ No newline at end of file diff --git a/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsPresenter.kt b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsPresenter.kt new file mode 100644 index 000000000..c0e29a529 --- /dev/null +++ b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsPresenter.kt @@ -0,0 +1,38 @@ +package ru.surfstudio.android.navigation.sample_standard.screen.dialogs + +import ru.surfstudio.android.core.mvp.binding.rx.ui.BaseRxPresenter +import ru.surfstudio.android.core.mvp.presenter.BasePresenterDependency +import ru.surfstudio.android.dagger.scope.PerScreen +import ru.surfstudio.android.navigation.animation.styled.StyledAnimations +import ru.surfstudio.android.navigation.command.dialog.Show +import ru.surfstudio.android.navigation.executor.NavigationCommandExecutor +import ru.surfstudio.android.navigation.sample_standard.R +import ru.surfstudio.android.navigation.sample_standard.screen.base.presenter.CommandExecutionPresenter +import ru.surfstudio.android.navigation.sample_standard.screen.dialogs.amazing.AmazingDialogRoute +import javax.inject.Inject + +@PerScreen +class DialogsPresenter @Inject constructor( + basePresenterDependency: BasePresenterDependency, + private val bm: DialogsBindModel, + override val commandExecutor: NavigationCommandExecutor +) : BaseRxPresenter(basePresenterDependency), CommandExecutionPresenter { + + override fun onFirstLoad() { + bm.openDialogButtonClicked bindTo { openDialog() } + bm.openDialogWithFadeButtonClicked bindTo { openDialogWithFade() } + bm.openDialogWithSlideButtonClicked bindTo { openDialogWithSlide() } + } + + private fun openDialog() { + Show(AmazingDialogRoute()).execute() + } + + private fun openDialogWithFade() { + Show(AmazingDialogRoute(), StyledAnimations(R.style.FadeDialogAnimation)).execute() + } + + private fun openDialogWithSlide() { + Show(AmazingDialogRoute(), StyledAnimations(R.style.SlideDialogAnimation)).execute() + } +} \ No newline at end of file diff --git a/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsRoute.kt b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsRoute.kt new file mode 100644 index 000000000..f00b205ad --- /dev/null +++ b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsRoute.kt @@ -0,0 +1,8 @@ +package ru.surfstudio.android.navigation.sample_standard.screen.dialogs + +import androidx.appcompat.app.AppCompatActivity +import ru.surfstudio.android.navigation.route.activity.ActivityRoute + +class DialogsRoute : ActivityRoute() { + override fun getScreenClass(): Class = DialogsActivityView::class.java +} \ No newline at end of file diff --git a/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsScreenConfigurator.kt b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsScreenConfigurator.kt new file mode 100644 index 000000000..c481ad70f --- /dev/null +++ b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/DialogsScreenConfigurator.kt @@ -0,0 +1,42 @@ +package ru.surfstudio.android.navigation.sample_standard.screen.dialogs + +import android.content.Intent +import dagger.Component +import dagger.Module +import dagger.Provides +import ru.surfstudio.android.core.mvp.configurator.BindableScreenComponent +import ru.surfstudio.android.core.mvp.configurator.ScreenComponent +import ru.surfstudio.android.dagger.scope.PerScreen +import ru.surfstudio.android.navigation.sample_standard.di.ui.ActivityComponent +import ru.surfstudio.android.navigation.sample_standard.di.ui.configurator.ActivityScreenConfigurator +import ru.surfstudio.android.navigation.sample_standard.di.ui.screen.ScreenModule +import ru.surfstudio.android.sample.dagger.ui.base.dagger.screen.DefaultActivityScreenModule + +/** + * Конфигуратор активити главного экрана + */ +class DialogsScreenConfigurator(intent: Intent) : ActivityScreenConfigurator(intent) { + @PerScreen + @Component(dependencies = [ActivityComponent::class], + modules = [DefaultActivityScreenModule::class, DialogsScreenModule::class]) + internal interface DialogsScreenComponent + : BindableScreenComponent + + @Module + internal class DialogsScreenModule : ScreenModule() { + + @Provides + @PerScreen + fun providePresenters(presenter: DialogsPresenter) = Any() + } + + override fun createScreenComponent(defaultActivityComponent: ActivityComponent, + defaultActivityScreenModule: DefaultActivityScreenModule, + intent: Intent): ScreenComponent<*> { + return DaggerDialogsScreenConfigurator_DialogsScreenComponent.builder() + .activityComponent(defaultActivityComponent) + .defaultActivityScreenModule(defaultActivityScreenModule) + .dialogsScreenModule(DialogsScreenModule()) + .build() + } +} diff --git a/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/amazing/AmazingDialog.kt b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/amazing/AmazingDialog.kt new file mode 100644 index 000000000..3aa04ca9d --- /dev/null +++ b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/amazing/AmazingDialog.kt @@ -0,0 +1,21 @@ +package ru.surfstudio.android.navigation.sample_standard.screen.dialogs.amazing + +import android.app.AlertDialog +import android.app.Dialog +import android.os.Bundle +import ru.surfstudio.android.navigation.sample_standard.screen.base.dialog.simple.BaseSimpleDialogRoute +import ru.surfstudio.android.navigation.sample_standard.screen.base.dialog.simple.BaseSimpleDialogView +import ru.surfstudio.android.navigation.sample_standard.screen.base.dialog.simple.SimpleDialogResult + +class AmazingDialog: BaseSimpleDialogView() { + + override val route: BaseSimpleDialogRoute = AmazingDialogRoute() + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + return AlertDialog.Builder(requireContext()) + .setTitle("Amazing title") + .setMessage("Gorgeous message") + .setPositiveButton("Ok") { _, _ -> closeWithResult(SimpleDialogResult.DISMISS) } + .create() + } +} \ No newline at end of file diff --git a/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/amazing/AmazingDialogRoute.kt b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/amazing/AmazingDialogRoute.kt new file mode 100644 index 000000000..a988d861b --- /dev/null +++ b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/dialogs/amazing/AmazingDialogRoute.kt @@ -0,0 +1,12 @@ +package ru.surfstudio.android.navigation.sample_standard.screen.dialogs.amazing + +import androidx.fragment.app.DialogFragment +import ru.surfstudio.android.navigation.sample_standard.screen.base.dialog.simple.BaseSimpleDialogRoute + +class AmazingDialogRoute : BaseSimpleDialogRoute() { + + override fun getScreenClass(): Class? { + return AmazingDialog::class.java + } + +} \ No newline at end of file diff --git a/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/guide/GuideBindModel.kt b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/guide/GuideBindModel.kt index 1d0e00705..725004d80 100644 --- a/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/guide/GuideBindModel.kt +++ b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/guide/GuideBindModel.kt @@ -9,4 +9,5 @@ class GuideBindModel @Inject constructor() { val bottomNavClicked = Action() val sharedElementClicked = Action() + val dialogsClicked = Action() } \ No newline at end of file diff --git a/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/guide/GuideFragmentView.kt b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/guide/GuideFragmentView.kt index 2af48873c..287119a11 100644 --- a/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/guide/GuideFragmentView.kt +++ b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/guide/GuideFragmentView.kt @@ -26,6 +26,7 @@ class GuideFragmentView : BaseRxFragmentView() { bm.bottomNavClicked.accept() } guide_shared_transition_btn.clicks() bindTo { bm.sharedElementClicked.accept() } + guide_dialogs_btn.clicks() bindTo { bm.dialogsClicked.accept() } } } \ No newline at end of file diff --git a/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/guide/GuidePresenter.kt b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/guide/GuidePresenter.kt index 7d3f4dd43..7858d25cf 100644 --- a/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/guide/GuidePresenter.kt +++ b/navigation/sample-standard/src/main/java/ru/surfstudio/android/navigation/sample_standard/screen/guide/GuidePresenter.kt @@ -3,10 +3,12 @@ package ru.surfstudio.android.navigation.sample_standard.screen.guide import ru.surfstudio.android.core.mvp.binding.rx.ui.BaseRxPresenter import ru.surfstudio.android.core.mvp.presenter.BasePresenterDependency import ru.surfstudio.android.dagger.scope.PerScreen +import ru.surfstudio.android.navigation.command.activity.Start import ru.surfstudio.android.navigation.command.fragment.Replace import ru.surfstudio.android.navigation.executor.NavigationCommandExecutor import ru.surfstudio.android.navigation.sample_standard.screen.base.presenter.CommandExecutionPresenter import ru.surfstudio.android.navigation.sample_standard.screen.bottom_nav.BottomNavRoute +import ru.surfstudio.android.navigation.sample_standard.screen.dialogs.DialogsRoute import javax.inject.Inject @PerScreen @@ -20,5 +22,8 @@ class GuidePresenter @Inject constructor( bm.bottomNavClicked.bindTo { Replace(BottomNavRoute()).execute() } + bm.dialogsClicked bindTo { + Start(DialogsRoute()).execute() + } } } \ No newline at end of file diff --git a/navigation/sample-standard/src/main/res/layout/activity_dialogs.xml b/navigation/sample-standard/src/main/res/layout/activity_dialogs.xml new file mode 100644 index 000000000..91259c0de --- /dev/null +++ b/navigation/sample-standard/src/main/res/layout/activity_dialogs.xml @@ -0,0 +1,29 @@ + + + +