diff --git a/app/src/main/java/ru/nm17/narodmon/MainActivity.kt b/app/src/main/java/ru/nm17/narodmon/MainActivity.kt index 3e7fa3a..02ea5ff 100644 --- a/app/src/main/java/ru/nm17/narodmon/MainActivity.kt +++ b/app/src/main/java/ru/nm17/narodmon/MainActivity.kt @@ -77,6 +77,7 @@ import ru.nm17.narodmon.db.AppDatabase import ru.nm17.narodmon.db.entities.KVSetting import ru.nm17.narodmon.ui.elements.AgreementDialog import ru.nm17.narodmon.ui.elements.GenericNavScaffold +import ru.nm17.narodmon.ui.pages.SensorsPage import ru.nm17.narodmon.ui.theme.NarodMonTheme @Composable @@ -125,7 +126,7 @@ class MainActivity : ComponentActivity() { NarodMonTheme { var agreed by remember { mutableStateOf(true) } - LaunchedEffect(key1 = "first_agreement_check", block = { + LaunchedEffect(key1 = Unit, block = { coScope.launch(Dispatchers.IO) { if (db.kvDao().getByKey("agreement_accepted")?.value != "true") { agreed = false @@ -134,23 +135,20 @@ class MainActivity : ComponentActivity() { }) if (!agreed) { - AgreementDialog { - coScope.launch(Dispatchers.IO) { - db.kvDao().setAll(KVSetting("agreement_accepted", "true")) - agreed = true + Scaffold { + AgreementDialog { + coScope.launch(Dispatchers.IO) { + db.kvDao().setAll(KVSetting("agreement_accepted", "true")) + agreed = true + } } - } - } - - if (!agreed) { - Surface { Column( horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center, - modifier = Modifier.fillMaxSize() + modifier = Modifier.fillMaxSize().padding(it) ) { CircularProgressIndicator() - Text(text = "вы не должны видеть этот текст") + Text(text = stringResource(R.string.waiting_for_user_agreement)) } } @@ -170,21 +168,7 @@ class MainActivity : ComponentActivity() { } } -@Composable -fun SensorsPage(navController: NavController) { - GenericNavScaffold(navDrawerSheet = {ModalDrawerSheet { - Text("Drawer title", modifier = Modifier.padding(16.dp), style = MaterialTheme.typography.titleLarge) - Divider() - NavigationDrawerItem( - label = { Text(text = "Drawer Item") }, - selected = true, - onClick = { /*TODO*/ } - ) - // ...other drawer items - }}) { - Greeting(name = "Hello world", modifier = Modifier.padding(it)) - } -} + @Composable fun Greeting(name: String, modifier: Modifier = Modifier) { diff --git a/app/src/main/java/ru/nm17/narodmon/ui/elements/Scaffolds.kt b/app/src/main/java/ru/nm17/narodmon/ui/elements/Scaffolds.kt index a8c1ec7..3f12806 100644 --- a/app/src/main/java/ru/nm17/narodmon/ui/elements/Scaffolds.kt +++ b/app/src/main/java/ru/nm17/narodmon/ui/elements/Scaffolds.kt @@ -3,9 +3,11 @@ package ru.nm17.narodmon.ui.elements import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Menu +import androidx.compose.material3.Divider import androidx.compose.material3.DrawerValue import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FabPosition @@ -13,7 +15,9 @@ import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ModalDrawerSheet import androidx.compose.material3.ModalNavigationDrawer +import androidx.compose.material3.NavigationDrawerItem import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar @@ -21,6 +25,9 @@ import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.rememberDrawerState import androidx.compose.runtime.Composable import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.navigation.compose.rememberNavController import kotlinx.coroutines.launch /** @@ -29,15 +36,26 @@ import kotlinx.coroutines.launch * TODO: Использовать для датчиков */ @Composable -fun GenericNavScaffold(navDrawerSheet: @Composable () -> Unit, content: @Composable (PaddingValues) -> Unit) { - var expanded = rememberDrawerState(initialValue = DrawerValue.Closed) - var coScope = rememberCoroutineScope(); +fun GenericNavScaffold(title: @Composable () -> Unit, content: @Composable (PaddingValues) -> Unit) { + val expanded = rememberDrawerState(initialValue = DrawerValue.Closed) + val coScope = rememberCoroutineScope(); + val navController = rememberNavController() // TODO: Используй меня - ModalNavigationDrawer(drawerState = expanded, drawerContent = navDrawerSheet) { + ModalNavigationDrawer(drawerState = expanded, drawerContent = { + ModalDrawerSheet { + Text("Drawer title", modifier = Modifier.padding(16.dp), style = MaterialTheme.typography.titleLarge) + Divider() + NavigationDrawerItem( + label = { Text(text = "Drawer Item") }, + selected = true, + onClick = { /*TODO*/ } + ) + } + }) { Scaffold( topBar = { TopAppBar( - title = { Text("Top App Bar") }, + title = title, colors = TopAppBarDefaults.largeTopAppBarColors( containerColor = MaterialTheme.colorScheme.primaryContainer ), diff --git a/app/src/main/java/ru/nm17/narodmon/ui/pages/Sensors.kt b/app/src/main/java/ru/nm17/narodmon/ui/pages/Sensors.kt new file mode 100644 index 0000000..6942361 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/ui/pages/Sensors.kt @@ -0,0 +1,28 @@ +package ru.nm17.narodmon.ui.pages + +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Divider +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ModalDrawerSheet +import androidx.compose.material3.NavigationDrawerItem +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.text.AnnotatedString +import androidx.compose.ui.unit.dp +import androidx.navigation.NavController +import ru.nm17.narodmon.Greeting +import ru.nm17.narodmon.R +import ru.nm17.narodmon.ui.elements.GenericNavScaffold + +@ExperimentalMaterial3Api +@Composable +fun SensorsPage(navController: NavController) { + GenericNavScaffold( + title = { Text(text = stringResource(R.string.sensors_page_title))} + ) { + Greeting(name = "world", modifier = Modifier.padding(it)) + } +} \ 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 51857ff..50cd33f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,10 +5,14 @@ Я принимаю соглашения Выйти - Для продолжения использования вы должны принять ниже перечисленные соглашения от проекта Народный Мониторинг. - \nГоворя про наше приложение под андройд, то можете не беспокоится: его исходный код на все 100% является открытым. + Для продолжения использования вы должны принять ниже перечисленные соглашения от + проекта Народный Мониторинг. + \nГоворя про наше приложение под андройд, то можете не беспокоится: его исходный + код на все 100% является открытым. Политика конфиденциальности Пользовательское соглашение Примите необходимые соглашения + Сенсоры + Ожидаю соглашение пользователя \ No newline at end of file