Skip to content

Commit 8ef1643

Browse files
committed
refactor: simplify PrefMainActivity
1 parent c42b500 commit 8ef1643

File tree

2 files changed

+18
-28
lines changed

2 files changed

+18
-28
lines changed

app/src/main/java/com/osfans/trime/data/prefs/AppPrefs.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ class AppPrefs(
283283
DARK,
284284
}
285285

286-
var uiMode by enum(UI_MODE, UiMode.AUTO)
286+
val uiMode = enum(UI_MODE, UiMode.AUTO)
287287
var showAppIcon by bool(SHOW_APP_ICON, true)
288288
val showStatusBarIcon by bool(SHOW_STATUS_BAR_ICON, false)
289289
}

app/src/main/java/com/osfans/trime/ui/main/PrefMainActivity.kt

+17-27
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,8 @@ import androidx.core.view.updateLayoutParams
2424
import androidx.lifecycle.Lifecycle
2525
import androidx.lifecycle.lifecycleScope
2626
import androidx.lifecycle.repeatOnLifecycle
27+
import androidx.navigation.NavController
2728
import androidx.navigation.fragment.NavHostFragment
28-
import androidx.navigation.ui.AppBarConfiguration
29-
import androidx.navigation.ui.setupWithNavController
3029
import com.hjq.permissions.Permission
3130
import com.hjq.permissions.XXPermissions
3231
import com.osfans.trime.R
@@ -44,26 +43,15 @@ import splitties.views.topPadding
4443

4544
class PrefMainActivity : AppCompatActivity() {
4645
private val viewModel: MainViewModel by viewModels()
47-
private val prefs = AppPrefs.defaultInstance()
4846

49-
private lateinit var navHostFragment: NavHostFragment
50-
private var loadingDialog: AlertDialog? = null
47+
private val uiMode by AppPrefs.defaultInstance().other.uiMode
5148

52-
private fun onNavigateUpListener(): Boolean {
53-
val navController = navHostFragment.navController
54-
return when (navController.currentDestination?.id) {
55-
R.id.prefFragment -> {
56-
// "minimize" the app, don't exit activity
57-
moveTaskToBack(false)
58-
true
59-
}
60-
else -> onSupportNavigateUp()
61-
}
62-
}
49+
private lateinit var navController: NavController
50+
private var loadingDialog: AlertDialog? = null
6351

6452
override fun onCreate(savedInstanceState: Bundle?) {
6553
val uiMode =
66-
when (prefs.other.uiMode) {
54+
when (uiMode) {
6755
AppPrefs.Other.UiMode.AUTO -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
6856
AppPrefs.Other.UiMode.LIGHT -> AppCompatDelegate.MODE_NIGHT_NO
6957
AppPrefs.Other.UiMode.DARK -> AppCompatDelegate.MODE_NIGHT_YES
@@ -88,14 +76,16 @@ class PrefMainActivity : AppCompatActivity() {
8876

8977
setContentView(binding.root)
9078
setSupportActionBar(binding.prefToolbar.toolbar)
91-
val appBarConfiguration =
92-
AppBarConfiguration(
93-
topLevelDestinationIds = setOf(),
94-
fallbackOnNavigateUpListener = ::onNavigateUpListener,
95-
)
96-
navHostFragment =
97-
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
98-
binding.prefToolbar.toolbar.setupWithNavController(navHostFragment.navController, appBarConfiguration)
79+
navController = binding.navHostFragment.getFragment<NavHostFragment>().navController
80+
binding.prefToolbar.toolbar.setNavigationOnClickListener {
81+
// prevent navigate up when child fragment has enabled `OnBackPressedCallback`
82+
if (onBackPressedDispatcher.hasEnabledCallbacks()) {
83+
onBackPressedDispatcher.onBackPressed()
84+
return@setNavigationOnClickListener
85+
}
86+
// "minimize" the activity if we can't go back
87+
navController.navigateUp() || onSupportNavigateUp() || moveTaskToBack(false)
88+
}
9989
viewModel.toolbarTitle.observe(this) {
10090
binding.prefToolbar.toolbar.title = it
10191
}
@@ -104,7 +94,7 @@ class PrefMainActivity : AppCompatActivity() {
10494
m.isVisible = it
10595
}
10696
}
107-
navHostFragment.navController.addOnDestinationChangedListener { _, dest, _ ->
97+
navController.addOnDestinationChangedListener { _, dest, _ ->
10898
dest.label?.let { viewModel.setToolbarTitle(it.toString()) }
10999
binding.prefToolbar.toolbar.subtitle =
110100
if (dest.id == R.id.prefFragment) {
@@ -157,7 +147,7 @@ class PrefMainActivity : AppCompatActivity() {
157147
true
158148
}
159149
R.id.preference__menu_about -> {
160-
navHostFragment.navController.navigate(R.id.action_prefFragment_to_aboutFragment)
150+
navController.navigate(R.id.action_prefFragment_to_aboutFragment)
161151
true
162152
}
163153
else -> super.onOptionsItemSelected(item)

0 commit comments

Comments
 (0)