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 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/navigation/sample-standard/src/main/res/layout/fragment_guide.xml b/navigation/sample-standard/src/main/res/layout/fragment_guide.xml
index fd6269aad..0dc0206a6 100644
--- a/navigation/sample-standard/src/main/res/layout/fragment_guide.xml
+++ b/navigation/sample-standard/src/main/res/layout/fragment_guide.xml
@@ -20,4 +20,11 @@
android:layout_margin="16dp"
android:text="Shared transition sample" />
+
+
diff --git a/navigation/sample-standard/src/main/res/values/styles.xml b/navigation/sample-standard/src/main/res/values/styles.xml
new file mode 100644
index 000000000..0226a1cfb
--- /dev/null
+++ b/navigation/sample-standard/src/main/res/values/styles.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file