11package edu.rpi.shuttletracker.ui.settings
22
3+ import android.content.Intent
4+ import android.net.Uri
5+ import android.provider.Settings
36import androidx.compose.foundation.layout.Arrangement
47import androidx.compose.foundation.layout.Row
58import androidx.compose.foundation.layout.fillMaxWidth
@@ -11,6 +14,7 @@ import androidx.compose.material.icons.outlined.Code
1114import androidx.compose.material.icons.outlined.Contrast
1215import androidx.compose.material.icons.outlined.Info
1316import androidx.compose.material.icons.outlined.RestartAlt
17+ import androidx.compose.material.icons.outlined.Settings
1418import androidx.compose.material3.ExperimentalMaterial3Api
1519import androidx.compose.material3.Icon
1620import androidx.compose.material3.IconButton
@@ -29,6 +33,7 @@ import androidx.compose.runtime.remember
2933import androidx.compose.runtime.rememberCoroutineScope
3034import androidx.compose.ui.Modifier
3135import androidx.compose.ui.input.nestedscroll.nestedScroll
36+ import androidx.compose.ui.platform.LocalContext
3237import androidx.compose.ui.res.stringResource
3338import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
3439import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -50,6 +55,16 @@ fun SettingsScreen(
5055 navigator : DestinationsNavigator ,
5156 viewModel : SettingsViewModel = hiltViewModel(),
5257) {
58+ val context = LocalContext .current
59+
60+ val openAppSettings: () -> Unit = {
61+ val intent =
62+ Intent (Settings .ACTION_APPLICATION_DETAILS_SETTINGS ).apply {
63+ data = Uri .fromParts(" package" , context.packageName, null )
64+ }
65+ context.startActivity(intent)
66+ }
67+
5368 val scrollBehavior =
5469 TopAppBarDefaults .exitUntilCollapsedScrollBehavior(
5570 rememberTopAppBarState(),
@@ -79,28 +94,12 @@ fun SettingsScreen(
7994 LazyColumn (
8095 modifier = Modifier .padding(padding),
8196 ) {
82- // item {
83- // ColorBlindSettingItem(
84- // colorBlindMode = settingsUiState.colorBlindMode,
85- // updateColorBlindMode = viewModel::updateColorBlindMode,
86- // )
87- // }
88-
8997 item {
9098 ThemeModeSettingItem (
9199 themeMode = settingsUiState.themeMode,
92100 updateThemeMode = viewModel::updateThemeMode,
93101 )
94102 }
95- if (settingsUiState.devOptionState) {
96- item {
97- SettingsItem (
98- Icons .Outlined .Code ,
99- stringResource(R .string.dev_options),
100- onClick = { navigator.navigate(DevMenuScreenDestination ()) },
101- )
102- }
103- }
104103
105104 item {
106105 SettingsItem (
@@ -122,6 +121,24 @@ fun SettingsScreen(
122121 onClick = { navigator.navigate(AboutScreenDestination ()) },
123122 )
124123 }
124+
125+ item {
126+ SettingsItem (
127+ icon = Icons .Outlined .Settings ,
128+ title = stringResource(R .string.open_app_settings),
129+ onClick = openAppSettings,
130+ )
131+ }
132+
133+ if (settingsUiState.devOptionState) {
134+ item {
135+ SettingsItem (
136+ Icons .Outlined .Code ,
137+ stringResource(R .string.dev_options),
138+ onClick = { navigator.navigate(DevMenuScreenDestination ()) },
139+ )
140+ }
141+ }
125142 }
126143 }
127144}
0 commit comments