1
+ package io.github.mrtry.todolist.app.todo.ui
2
+
3
+ import android.content.Context
4
+ import android.content.Intent
5
+ import android.os.Bundle
6
+ import androidx.appcompat.app.AppCompatActivity
7
+ import androidx.databinding.DataBindingUtil
8
+ import androidx.recyclerview.widget.LinearLayoutManager
9
+ import io.github.mrtry.todolist.MainApplication
10
+ import io.github.mrtry.todolist.R
11
+ import io.github.mrtry.todolist.app.todo.ui.adapter.ToDoAdapter
12
+ import io.github.mrtry.todolist.app.todo.ui.navigator.ToDoNavigator
13
+ import io.github.mrtry.todolist.app.todo.viewmodel.ToDoViewModel
14
+ import io.github.mrtry.todolist.databinding.ActivityToDoBinding
15
+ import io.github.mrtry.todolist.di.Injectable
16
+ import io.github.mrtry.todolist.di.component.ToDoComponent
17
+ import io.github.mrtry.todolist.di.module.ActivityModule
18
+ import io.github.mrtry.todolist.misc.ui.binding.Bindable
19
+ import kotlinx.coroutines.CoroutineScope
20
+ import kotlinx.coroutines.cancelChildren
21
+ import javax.inject.Inject
22
+
23
+ class ToDoActivity : AppCompatActivity (), Injectable<ToDoComponent>, Bindable<ActivityToDoBinding> {
24
+ companion object {
25
+ fun createIntent (context : Context ): Intent =
26
+ Intent (context, ToDoActivity ::class .java)
27
+ }
28
+
29
+ @Inject
30
+ internal lateinit var viewModel: ToDoViewModel
31
+
32
+ @Inject
33
+ internal lateinit var navigator: ToDoNavigator
34
+
35
+ @Inject
36
+ internal lateinit var coroutineScope: CoroutineScope
37
+
38
+ override val viewBinding: ActivityToDoBinding by lazy {
39
+ DataBindingUtil .setContentView<ActivityToDoBinding >(this , R .layout.activity_to_do)
40
+ }
41
+
42
+ override val component: ToDoComponent by lazy {
43
+ MainApplication .getComponent(this )
44
+ .plusToDoComponent(ActivityModule (this ))
45
+ }
46
+
47
+ override fun onCreate (savedInstanceState : Bundle ? ) {
48
+ super .onCreate(savedInstanceState)
49
+ component.inject(this )
50
+ setSupportActionBar(viewBinding.toolbar)
51
+
52
+ with (viewBinding) {
53
+ viewModel = this @ToDoActivity.viewModel
54
+ lifecycleOwner = this @ToDoActivity
55
+
56
+ with (bannerAddTask) {
57
+ viewModel = this @ToDoActivity.viewModel.taskViewModel
58
+ lifecycleOwner = this @ToDoActivity
59
+ }
60
+
61
+ with (list) {
62
+ adapter = ToDoAdapter (this @ToDoActivity, this @ToDoActivity.viewModel.items, this @ToDoActivity)
63
+ layoutManager = LinearLayoutManager (this @ToDoActivity)
64
+ }
65
+ }
66
+
67
+ viewModel.load()
68
+ }
69
+
70
+ override fun onStop () {
71
+ super .onStop()
72
+ coroutineScope.coroutineContext.cancelChildren()
73
+ }
74
+ }
0 commit comments