diff --git a/app/src/main/java/ru/nm17/narodmon/ui/elements/SettingsItem.kt b/app/src/main/java/ru/nm17/narodmon/ui/elements/SettingsItem.kt new file mode 100644 index 0000000..daf382f --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/ui/elements/SettingsItem.kt @@ -0,0 +1,50 @@ +package ru.nm17.narodmon.ui.elements + +import androidx.annotation.StringRes +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.Icon +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import ru.nm17.narodmon.R + +/** + * Кнопка, которая нужна для настроек. + * @param titleId Id заголовка кнопки + * @param leadingItem Заполнить, когда нужно вставить Composable перед заголовком(например [Icon], [FilterCheckbox] или [Switch] + */ +@Composable +fun SettingsItem( + @StringRes titleId: Int, + leadingItem: @Composable (() -> Unit)? = null, + onClick: () -> Unit = {} +) { + Row(modifier = Modifier.padding(16.dp)) { + if (leadingItem != null) { + leadingItem.invoke() + Spacer(modifier = Modifier.size(16.dp)) + } + Column(modifier = Modifier + .fillMaxWidth() + .clickable { onClick.invoke() }) { + Text(text = stringResource(id = titleId)) + } + } + +} + +@Preview(showBackground = true) +@Composable +fun PreviewSettingsItem() { + SettingsItem(R.string.about_app) {} +} \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/ui/settings/SettingsScreen.kt b/app/src/main/java/ru/nm17/narodmon/ui/settings/SettingsScreen.kt index ba6070e..fb75ba0 100644 --- a/app/src/main/java/ru/nm17/narodmon/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/ru/nm17/narodmon/ui/settings/SettingsScreen.kt @@ -1,16 +1,37 @@ package ru.nm17.narodmon.ui.settings -import androidx.compose.material3.Text +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview +import androidx.navigation.NavController +import androidx.navigation.compose.rememberNavController +import ru.nm17.narodmon.R +import ru.nm17.narodmon.ui.elements.SettingsItem +import ru.nm17.narodmon.ui.theme.NarodMonTheme @Composable -fun SettingsScreen() { - Text(text = "todo") +fun SettingsScreen(navController: NavController) { + LazyColumn(modifier = Modifier.fillMaxSize()) { + item { + SettingsItem(titleId = R.string.debug_menu) { + navController.navigate(Settings.Debug.route) + } + } + item { + SettingsItem(R.string.about_app) { + navController.navigate(Settings.AboutApp.route) + } + } + + } } -@Preview +@Preview(showBackground = true, showSystemUi = false) @Composable fun PreviewSettingsScreen() { - SettingsScreen() + NarodMonTheme { + SettingsScreen(rememberNavController()) + } } \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2eca6ee..9e74ffa 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -56,4 +56,6 @@ Сообщения Настройки Поиск датчиков + О приложении + Debug-меню \ No newline at end of file