diff --git a/app/src/main/java/com/pixelized/biblib/ui/composable/screen/MainScreenComposable.kt b/app/src/main/java/com/pixelized/biblib/ui/composable/screen/MainScreenComposable.kt index b75bf4d..3a2a49f 100644 --- a/app/src/main/java/com/pixelized/biblib/ui/composable/screen/MainScreenComposable.kt +++ b/app/src/main/java/com/pixelized/biblib/ui/composable/screen/MainScreenComposable.kt @@ -5,6 +5,7 @@ import androidx.compose.animation.core.tween import androidx.compose.material.* import androidx.compose.material.icons.Icons import androidx.compose.material.icons.sharp.ArrowBack +import androidx.compose.material.icons.sharp.LocalLibrary import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState @@ -15,6 +16,25 @@ import com.pixelized.biblib.ui.composable.pages.DetailPageComposable import com.pixelized.biblib.ui.composable.pages.HomePageComposable import com.pixelized.biblib.ui.theme.BibLibTheme import com.pixelized.biblib.ui.viewmodel.NavigationViewModel +import com.pixelized.biblib.ui.viewmodel.NavigationViewModel.Page + +@Preview +@Composable +fun ToolbarComposableDarkPreview() { + val viewModel = NavigationViewModel() + BibLibTheme(darkTheme = false) { + ToolbarComposable(navigationViewModel = viewModel) + } +} + +@Preview +@Composable +fun ToolbarComposableLightPreview() { + val viewModel = NavigationViewModel() + BibLibTheme(darkTheme = true) { + ToolbarComposable(navigationViewModel = viewModel) + } +} @Preview @Composable @@ -30,38 +50,45 @@ fun MainScreenComposable(navigationViewModel: NavigationViewModel) { val page by navigationViewModel.page.observeAsState() Scaffold( - topBar = { - TopAppBar( - title = { Text(stringResource(id = R.string.app_name)) }, - navigationIcon = navigationIcon(navigationViewModel) - ) - }, + topBar = { ToolbarComposable(navigationViewModel) }, ) { Crossfade(targetState = page, animationSpec = tween(1000)) { when (it) { - is NavigationViewModel.Page.HomePage -> HomePageComposable(navigationViewModel) - is NavigationViewModel.Page.Detail -> DetailPageComposable(it.book) + is Page.HomePage -> HomePageComposable(navigationViewModel) + is Page.Detail -> DetailPageComposable(it.book) } } } } @Composable -fun navigationIcon(navigationViewModel: NavigationViewModel): (@Composable () -> Unit)? { - val page by navigationViewModel.page.observeAsState() +fun ToolbarComposable(navigationViewModel: NavigationViewModel) { + TopAppBar( + title = { Text(stringResource(id = R.string.app_name)) }, + navigationIcon = { NavigationIcon(navigationViewModel) } + ) +} - return if (page !is NavigationViewModel.Page.HomePage) { - { - IconButton(onClick = { +@Composable +fun NavigationIcon(navigationViewModel: NavigationViewModel) { + val page: Page? by navigationViewModel.page.observeAsState() + + Crossfade(targetState = page) { + when (it) { + is Page.HomePage -> IconButton(onClick = {}) { + Icon( + imageVector = Icons.Sharp.LocalLibrary, + contentDescription = "" + ) + } + else -> IconButton(onClick = { navigationViewModel.navigateBack() }) { Icon( imageVector = Icons.Sharp.ArrowBack, - contentDescription = "" + contentDescription = "back" ) } } - } else { - null } } \ No newline at end of file