1- package com.androidvip.sysctlgui.ui
1+ package com.androidvip.sysctlgui.ui.main
22
33import android.app.Activity
44import android.content.Intent
@@ -12,6 +12,7 @@ import androidx.appcompat.app.AlertDialog
1212import androidx.appcompat.app.AppCompatActivity
1313import androidx.lifecycle.lifecycleScope
1414import com.androidvip.sysctlgui.R
15+ import com.androidvip.sysctlgui.data.models.HomeItem
1516import com.androidvip.sysctlgui.data.utils.RootUtils
1617import com.androidvip.sysctlgui.databinding.ActivityMainBinding
1718import com.androidvip.sysctlgui.domain.models.param.DomainKernelParam
@@ -28,46 +29,56 @@ import com.google.gson.JsonParseException
2829import com.google.gson.JsonSyntaxException
2930import kotlinx.coroutines.launch
3031import org.koin.android.ext.android.inject
32+ import org.koin.androidx.viewmodel.ext.android.viewModel
3133
32- class MainActivity : AppCompatActivity () {
34+ class MainActivity : AppCompatActivity (), HomeItemAdapter.OnHomeItemClickedListener {
3335 private lateinit var binding: ActivityMainBinding
3436 private val rootUtils: RootUtils by inject()
37+
3538 private val applyParamsUseCase: ApplyParamsUseCase by inject()
3639 private val clearUserParamUseCase: ClearUserParamUseCase by inject()
3740 private val addUserParamsUseCase: AddUserParamsUseCase by inject()
3841
42+ private val viewModel: MainViewModel by viewModel()
43+
3944 override fun onCreate (savedInstanceState : Bundle ? ) {
4045 super .onCreate(savedInstanceState)
4146 binding = ActivityMainBinding .inflate(layoutInflater)
4247 setContentView(binding.root)
4348 setSupportActionBar(binding.toolbar)
4449
45- binding.content.mainParamsList.setOnClickListener {
46- Intent (this , KernelParamListActivity ::class .java).apply {
47- startActivity(this )
48- }
49- }
50+ val adapter = HomeItemAdapter (this )
51+ binding.content.recyclerView.adapter = adapter
52+ adapter.submitList(viewModel.getHomeItems())
5053
51- binding.content.mainParamBrowser.setOnClickListener {
52- Intent ( this , KernelParamBrowserActivity :: class .java). apply {
53- startActivity(this )
54- }
55- }
54+ viewModel.viewEffect.observe( this ) { viewEffect ->
55+ when (viewEffect) {
56+ is MainViewEffect . NavigateToKernelList -> startActivity(
57+ Intent ( this , KernelParamListActivity :: class .java)
58+ )
5659
57- binding.content.mainReadFromFile.setOnClickListener {
58- val intent = Intent (Intent .ACTION_OPEN_DOCUMENT ).apply {
59- addCategory(Intent .CATEGORY_OPENABLE )
60- type = " */*"
61- }
62- startActivityForResult(
63- intent,
64- OPEN_FILE_REQUEST_CODE
65- )
66- }
60+ is MainViewEffect .NavigateToKernelBrowser -> startActivity(
61+ Intent (this , KernelParamBrowserActivity ::class .java)
62+ )
6763
68- binding.content.mainFavorites.setOnClickListener {
69- Intent (this , ManageFavoritesParamsActivity ::class .java).apply {
70- startActivity(this )
64+ is MainViewEffect .ImportParamsFromFile -> {
65+ val intent = Intent (Intent .ACTION_OPEN_DOCUMENT ).apply {
66+ addCategory(Intent .CATEGORY_OPENABLE )
67+ type = " */*"
68+ }
69+ startActivityForResult(
70+ intent,
71+ OPEN_FILE_REQUEST_CODE
72+ )
73+ }
74+
75+ is MainViewEffect .NavigateToFavorites -> startActivity(
76+ Intent (this , ManageFavoritesParamsActivity ::class .java)
77+ )
78+
79+ is MainViewEffect .NavigateToSettings -> {
80+ startActivity(Intent (this , SettingsActivity ::class .java))
81+ }
7182 }
7283 }
7384
@@ -84,9 +95,7 @@ class MainActivity : AppCompatActivity() {
8495 when (item.itemId) {
8596 android.R .id.home -> finish()
8697
87- R .id.action_settings -> {
88- startActivity(Intent (this , SettingsActivity ::class .java))
89- }
98+ R .id.action_settings -> viewModel.doWhenSettingsPressed()
9099
91100 R .id.action_exit -> {
92101 moveTaskToBack(true )
@@ -126,6 +135,15 @@ class MainActivity : AppCompatActivity() {
126135 super .onActivityResult(requestCode, resultCode, data)
127136 }
128137
138+ override fun onHomeItemClicked (item : HomeItem , position : Int ) {
139+ when (position) {
140+ 0 -> viewModel.doWhenListPressed()
141+ 1 -> viewModel.doWhenBrowsePressed()
142+ 2 -> viewModel.doWhenImportPressed()
143+ 3 -> viewModel.doWhenFavoritesPressed()
144+ }
145+ }
146+
129147 private suspend fun applyParamsFromUri (uri : Uri , fileExtension : String ) {
130148 val successfulParams: MutableList <DomainKernelParam > = mutableListOf ()
131149
0 commit comments