From 67cb7d4ba0df152e4b6d9f035d145f306600c0e4 Mon Sep 17 00:00:00 2001 From: vfsfitvnm Date: Sun, 5 Jun 2022 12:29:36 +0200 Subject: [PATCH] Add SettingsScreen --- .../vimusic/ui/screens/HomeScreen.kt | 13 ++- .../vimusic/ui/screens/SettingsScreen.kt | 79 +++++++++++++++++++ .../it/vfsfitvnm/vimusic/ui/screens/routes.kt | 7 ++ app/src/main/res/drawable/cog.xml | 9 +++ 4 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/SettingsScreen.kt create mode 100644 app/src/main/res/drawable/cog.xml diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/HomeScreen.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/HomeScreen.kt index 9cfbd01..ff86b1e 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/HomeScreen.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/HomeScreen.kt @@ -59,6 +59,7 @@ fun HomeScreen(intentVideoId: String?) { val lazyListState = rememberLazyListState() val intentVideoRoute = rememberIntentVideoRoute(intentVideoId) + val settingsRoute = rememberSettingsRoute() val playlistRoute = rememberLocalPlaylistRoute() val searchRoute = rememberSearchRoute() val searchResultRoute = rememberSearchResultRoute() @@ -96,6 +97,10 @@ fun HomeScreen(intentVideoId: String?) { ) } + settingsRoute { + SettingsScreen() + } + playlistRoute { playlistId -> LocalPlaylistScreen( playlistId = playlistId ?: error("playlistId cannot be null") @@ -177,8 +182,14 @@ fun HomeScreen(intentVideoId: String?) { modifier = Modifier .height(52.dp) ) { - Spacer( + Image( + painter = painterResource(R.drawable.cog), + contentDescription = null, + colorFilter = ColorFilter.tint(colorPalette.text), modifier = Modifier + .clickable { + settingsRoute() + } .padding(horizontal = 16.dp, vertical = 8.dp) .size(24.dp) ) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/SettingsScreen.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/SettingsScreen.kt new file mode 100644 index 0000000..97bbac7 --- /dev/null +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/SettingsScreen.kt @@ -0,0 +1,79 @@ +package it.vfsfitvnm.vimusic.ui.screens + +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.foundation.* +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.text.BasicText +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.dp +import it.vfsfitvnm.route.RouteHandler +import it.vfsfitvnm.vimusic.R +import it.vfsfitvnm.vimusic.ui.components.TopAppBar +import it.vfsfitvnm.vimusic.ui.styling.LocalColorPalette +import it.vfsfitvnm.vimusic.ui.styling.LocalTypography +import it.vfsfitvnm.vimusic.utils.semiBold + +@ExperimentalAnimationApi +@Composable +fun SettingsScreen() { + val albumRoute = rememberAlbumRoute() + val artistRoute = rememberArtistRoute() + + val scrollState = rememberScrollState() + + RouteHandler(listenToGlobalEmitter = true) { + albumRoute { browseId -> + AlbumScreen( + browseId = browseId ?: error("browseId cannot be null") + ) + } + + artistRoute { browseId -> + ArtistScreen( + browseId = browseId ?: error("browseId cannot be null") + ) + } + + host { + val colorPalette = LocalColorPalette.current + val typography = LocalTypography.current + + Column( + modifier = Modifier + .padding(bottom = 72.dp) + .background(colorPalette.background) + .fillMaxSize() + .verticalScroll(scrollState) + ) { + TopAppBar( + modifier = Modifier + .height(52.dp) + ) { + Image( + painter = painterResource(R.drawable.chevron_back), + contentDescription = null, + colorFilter = ColorFilter.tint(colorPalette.text), + modifier = Modifier + .clickable(onClick = pop) + .padding(horizontal = 16.dp, vertical = 8.dp) + .size(24.dp) + ) + + BasicText( + text = "Settings", + style = typography.m.semiBold + ) + + Spacer( + modifier = Modifier + .padding(horizontal = 16.dp, vertical = 8.dp) + .size(24.dp) + ) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/routes.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/routes.kt index e904261..2030859 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/routes.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/routes.kt @@ -80,3 +80,10 @@ fun rememberLyricsRoute(): Route0 { Route0("LyricsRoute") } } + +@Composable +fun rememberSettingsRoute(): Route0 { + return remember { + Route0("SettingsRoute") + } +} diff --git a/app/src/main/res/drawable/cog.xml b/app/src/main/res/drawable/cog.xml new file mode 100644 index 0000000..250e24a --- /dev/null +++ b/app/src/main/res/drawable/cog.xml @@ -0,0 +1,9 @@ + + +