Skip to content

Commit 8b790dd

Browse files
Spring WongSpring Wong
Spring Wong
authored and
Spring Wong
committed
added FlowControl as further dagger sample
1 parent 8aded0d commit 8b790dd

File tree

6 files changed

+68
-10
lines changed

6 files changed

+68
-10
lines changed

app/src/main/java/com/spring/androidconductormvvmsample/MainActivity.kt

+3-6
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@ import com.bluelinelabs.conductor.Router
88
import com.bluelinelabs.conductor.RouterTransaction
99
import com.spring.androidconductormvvmsample.config.LOG_TAG
1010
import com.spring.androidconductormvvmsample.controllers.SimpleController
11-
import com.spring.androidconductormvvmsample.dagger.ActivityComponent
12-
import com.spring.androidconductormvvmsample.dagger.ActivityModule
13-
import com.spring.androidconductormvvmsample.dagger.ApplicationComponent
14-
import com.spring.androidconductormvvmsample.dagger.DaggerActivityComponent
11+
import com.spring.androidconductormvvmsample.dagger.*
1512
import kotlinx.android.synthetic.main.activity_main.*
1613
import javax.inject.Inject
1714
import javax.inject.Named
@@ -28,10 +25,10 @@ class MainActivity : AppCompatActivity() {
2825
override fun onCreate(savedInstanceState: Bundle?) {
2926
super.onCreate(savedInstanceState)
3027
setContentView(R.layout.activity_main)
28+
router = Conductor.attachRouter(this, this.mainContainer, savedInstanceState)
3129
MainApplication.graph.inject(this)
32-
graph = DaggerActivityComponent.builder().activityModule(ActivityModule(this)).build()
30+
graph = DaggerActivityComponent.builder().flowModule(FlowModule(router)).activityModule(ActivityModule(this)).build()
3331

34-
router = Conductor.attachRouter(this, this.mainContainer, savedInstanceState)
3532
if (!router.hasRootController()) {
3633
router.setRoot(RouterTransaction.with(SimpleController()))
3734
}

app/src/main/java/com/spring/androidconductormvvmsample/controllers/DetailController.kt

+3-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import javax.inject.Inject
2020
class DetailController : Controller() {
2121
@Inject
2222
lateinit var viewModel : SimpleViewModel
23+
@Inject
24+
lateinit var flowControl: FlowControl
2325

2426
init {
2527
MainActivity.graph.inject(this)
@@ -40,8 +42,7 @@ class DetailController : Controller() {
4042
override fun onAttach(view: View) {
4143
super.onAttach(view)
4244
view.btnPopPush.clicks().subscribe({
43-
next -> router.popCurrentController()
44-
router.pushController(RouterTransaction.with(DetailController()).pushChangeHandler(VerticalChangeHandler()))
45+
flowControl.presentFromRoot(DetailController())
4546
})
4647
}
4748
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.spring.androidconductormvvmsample.controllers
2+
3+
import com.bluelinelabs.conductor.Controller
4+
import com.bluelinelabs.conductor.Router
5+
import com.bluelinelabs.conductor.RouterTransaction
6+
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler
7+
import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler
8+
import okhttp3.Route
9+
10+
/**
11+
* Created by spring on 10/3/2018.
12+
*/
13+
class FlowControl constructor(router : Router) {
14+
private var router : Router = router
15+
fun present(controller : Controller) {
16+
router.pushController(RouterTransaction.with(controller)
17+
.pushChangeHandler(VerticalChangeHandler())
18+
.popChangeHandler(VerticalChangeHandler()))
19+
}
20+
21+
fun push(controller: Controller) {
22+
router.pushController(RouterTransaction.with(controller)
23+
.pushChangeHandler(HorizontalChangeHandler())
24+
.popChangeHandler(HorizontalChangeHandler())
25+
)
26+
}
27+
28+
fun presentFromRoot(controller: Controller) {
29+
router.popToRoot()
30+
present(controller)
31+
}
32+
}

app/src/main/java/com/spring/androidconductormvvmsample/controllers/SimpleController.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import javax.inject.Inject
2222
class SimpleController : Controller (){
2323
@Inject
2424
lateinit var viewModel : SimpleViewModel
25+
@Inject
26+
lateinit var flowControl: FlowControl
2527

2628
init {
2729
MainActivity.graph.inject(this)
@@ -39,7 +41,7 @@ class SimpleController : Controller (){
3941
super.onAttach(view)
4042
getView()?.ivLauncher?.clicks()?.subscribe({
4143
next -> Log.d(LOG_TAG, "Clicked launcher")
42-
router.pushController(RouterTransaction.with(DetailController()).pushChangeHandler(VerticalChangeHandler()))
44+
flowControl.push(DetailController())
4345
})
4446
}
4547
}

app/src/main/java/com/spring/androidconductormvvmsample/dagger/ActivityComponent.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import javax.inject.Singleton
1111
* Created by spring on 10/3/2018.
1212
*/
1313
@Singleton
14-
@Component(modules = arrayOf(ActivityModule::class, NetModule::class))
14+
@Component(modules = arrayOf(ActivityModule::class, NetModule::class, FlowModule::class))
1515
interface ActivityComponent {
1616
fun inject(mainActivity: MainActivity)
1717
fun inject(simpleController: SimpleController)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.spring.androidconductormvvmsample.dagger
2+
3+
import android.app.Activity
4+
import com.bluelinelabs.conductor.Router
5+
import com.spring.androidconductormvvmsample.controllers.FlowControl
6+
import dagger.Module
7+
import dagger.Provides
8+
import javax.inject.Singleton
9+
10+
/**
11+
* Created by spring on 10/3/2018.
12+
*/
13+
@Module
14+
class FlowModule(private val rout : Router) {
15+
16+
private var router : Router = rout
17+
18+
@Provides
19+
fun provideRouter() : Router {
20+
return router
21+
}
22+
23+
@Singleton
24+
@Provides
25+
fun provideFlowControl(router : Router) : FlowControl = FlowControl(router)
26+
}

0 commit comments

Comments
 (0)