forked from TeamNewPipe/NewPipe
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSettingsV2Activity.kt
More file actions
81 lines (75 loc) · 3.25 KB
/
SettingsV2Activity.kt
File metadata and controls
81 lines (75 loc) · 3.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package org.schabi.newpipe.settings
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.annotation.StringRes
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import dagger.hilt.android.AndroidEntryPoint
import org.schabi.newpipe.R
import org.schabi.newpipe.settings.viewmodel.SettingsViewModel
import org.schabi.newpipe.ui.SettingsRoutes
import org.schabi.newpipe.ui.Toolbar
import org.schabi.newpipe.ui.theme.AppTheme
@AndroidEntryPoint
class SettingsV2Activity : ComponentActivity() {
private val settingsViewModel: SettingsViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val navController = rememberNavController()
val navBackStackEntry by navController.currentBackStackEntryAsState()
@StringRes val screenTitleRes by remember(navBackStackEntry) {
mutableIntStateOf(
when (navBackStackEntry?.destination?.route) {
SettingsRoutes.SettingsMainRoute::class.java.canonicalName -> SettingsRoutes.SettingsMainRoute.screenTitleRes
SettingsRoutes.SettingsDebugRoute::class.java.canonicalName -> SettingsRoutes.SettingsDebugRoute.screenTitleRes
else -> R.string.settings
}
)
}
AppTheme {
Scaffold(topBar = {
Toolbar(
title = stringResource(screenTitleRes),
onNavigateBack = {
if (!navController.popBackStack()) {
finish()
}
},
hasSearch = true,
onSearch = {
// TODO: Add suggestions logic
},
searchResults = emptyList()
)
}) { padding ->
NavHost(
navController = navController,
startDestination = SettingsRoutes.SettingsMainRoute,
modifier = Modifier.padding(padding)
) {
composable<SettingsRoutes.SettingsMainRoute> {
SettingsScreen(onSelectSettingOption = { route ->
navController.navigate(route)
})
}
composable<SettingsRoutes.SettingsDebugRoute> {
DebugScreen(settingsViewModel)
}
}
}
}
}
}
}