Change toolbar composable.
This commit is contained in:
		
							parent
							
								
									86b45cbdb4
								
							
						
					
					
						commit
						8c1077ca11
					
				
					 1 changed files with 43 additions and 16 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue