Loading cardinal-android/app/src/main/java/earth/maps/cardinal/ui/place/PlaceCardScreen.kt +134 −109 Original line number Diff line number Diff line Loading @@ -102,7 +102,31 @@ fun PlaceCardScreen( onPeekHeightChange(heightInDp) }, ) { // Place name and type PlaceHeader(displayedPlace) PlaceAddress(displayedPlace, addressFormatter) PlaceActions(displayedPlace, viewModel, place, onGetDirections) { showUnsaveConfirmationDialog = true } // Inset horizontal divider HorizontalDivider( modifier = Modifier .fillMaxWidth() .padding(vertical = dimensionResource(dimen.padding) / 2), thickness = DividerDefaults.Thickness, color = MaterialTheme.colorScheme.outlineVariant ) } if (place.isTransitStop) { TransitStopInformation(viewModel = hiltViewModel<TransitStopCardViewModel>().also { it.setStop(place) }, onRouteClicked = {}) } UnsaveConfirmationDialog(displayedPlace, viewModel, showUnsaveConfirmationDialog) { showUnsaveConfirmationDialog = false } } } @Composable private fun PlaceHeader(displayedPlace: Place) { Text( text = displayedPlace.name, style = MaterialTheme.typography.headlineSmall, Loading @@ -115,8 +139,10 @@ fun PlaceCardScreen( color = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.padding(top = 4.dp) ) } // Address information @Composable private fun PlaceAddress(displayedPlace: Place, addressFormatter: AddressFormatter) { displayedPlace.address?.let { address -> Row( modifier = Modifier Loading @@ -138,8 +164,16 @@ fun PlaceCardScreen( ) } } } // Action buttons @Composable private fun PlaceActions( displayedPlace: Place, viewModel: PlaceCardViewModel, place: Place, onGetDirections: (Place) -> Unit, onShowUnsaveDialog: () -> Unit ) { Row( modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically ) { Loading @@ -157,7 +191,7 @@ fun PlaceCardScreen( onClick = { if (viewModel.isPlaceSaved.value) { // Show confirmation dialog for unsaving showUnsaveConfirmationDialog = true onShowUnsaveDialog() } else { viewModel.savePlace(place) } Loading Loading @@ -185,26 +219,18 @@ fun PlaceCardScreen( } } } // Inset horizontal divider HorizontalDivider( modifier = Modifier .fillMaxWidth() .padding(vertical = dimensionResource(dimen.padding) / 2), thickness = DividerDefaults.Thickness, color = MaterialTheme.colorScheme.outlineVariant ) } if (place.isTransitStop) { TransitStopInformation(viewModel = hiltViewModel<TransitStopCardViewModel>().also { it.setStop(place) }, onRouteClicked = {}) } // Unsave Confirmation Dialog if (showUnsaveConfirmationDialog) { @Composable private fun UnsaveConfirmationDialog( displayedPlace: Place, viewModel: PlaceCardViewModel, show: Boolean, onDismiss: () -> Unit ) { if (show) { AlertDialog( onDismissRequest = { showUnsaveConfirmationDialog = false }, onDismissRequest = onDismiss, title = { Text(stringResource(string.unsave_place)) }, text = { Text( Loading @@ -217,17 +243,16 @@ fun PlaceCardScreen( TextButton( onClick = { viewModel.unsavePlace(displayedPlace) showUnsaveConfirmationDialog = false onDismiss() }) { Text(stringResource(string.unsave_place)) } }, dismissButton = { TextButton( onClick = { showUnsaveConfirmationDialog = false }) { TextButton(onClick = onDismiss) { Text(stringResource(string.cancel_button)) } }) } ) } } Loading
cardinal-android/app/src/main/java/earth/maps/cardinal/ui/place/PlaceCardScreen.kt +134 −109 Original line number Diff line number Diff line Loading @@ -102,7 +102,31 @@ fun PlaceCardScreen( onPeekHeightChange(heightInDp) }, ) { // Place name and type PlaceHeader(displayedPlace) PlaceAddress(displayedPlace, addressFormatter) PlaceActions(displayedPlace, viewModel, place, onGetDirections) { showUnsaveConfirmationDialog = true } // Inset horizontal divider HorizontalDivider( modifier = Modifier .fillMaxWidth() .padding(vertical = dimensionResource(dimen.padding) / 2), thickness = DividerDefaults.Thickness, color = MaterialTheme.colorScheme.outlineVariant ) } if (place.isTransitStop) { TransitStopInformation(viewModel = hiltViewModel<TransitStopCardViewModel>().also { it.setStop(place) }, onRouteClicked = {}) } UnsaveConfirmationDialog(displayedPlace, viewModel, showUnsaveConfirmationDialog) { showUnsaveConfirmationDialog = false } } } @Composable private fun PlaceHeader(displayedPlace: Place) { Text( text = displayedPlace.name, style = MaterialTheme.typography.headlineSmall, Loading @@ -115,8 +139,10 @@ fun PlaceCardScreen( color = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.padding(top = 4.dp) ) } // Address information @Composable private fun PlaceAddress(displayedPlace: Place, addressFormatter: AddressFormatter) { displayedPlace.address?.let { address -> Row( modifier = Modifier Loading @@ -138,8 +164,16 @@ fun PlaceCardScreen( ) } } } // Action buttons @Composable private fun PlaceActions( displayedPlace: Place, viewModel: PlaceCardViewModel, place: Place, onGetDirections: (Place) -> Unit, onShowUnsaveDialog: () -> Unit ) { Row( modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically ) { Loading @@ -157,7 +191,7 @@ fun PlaceCardScreen( onClick = { if (viewModel.isPlaceSaved.value) { // Show confirmation dialog for unsaving showUnsaveConfirmationDialog = true onShowUnsaveDialog() } else { viewModel.savePlace(place) } Loading Loading @@ -185,26 +219,18 @@ fun PlaceCardScreen( } } } // Inset horizontal divider HorizontalDivider( modifier = Modifier .fillMaxWidth() .padding(vertical = dimensionResource(dimen.padding) / 2), thickness = DividerDefaults.Thickness, color = MaterialTheme.colorScheme.outlineVariant ) } if (place.isTransitStop) { TransitStopInformation(viewModel = hiltViewModel<TransitStopCardViewModel>().also { it.setStop(place) }, onRouteClicked = {}) } // Unsave Confirmation Dialog if (showUnsaveConfirmationDialog) { @Composable private fun UnsaveConfirmationDialog( displayedPlace: Place, viewModel: PlaceCardViewModel, show: Boolean, onDismiss: () -> Unit ) { if (show) { AlertDialog( onDismissRequest = { showUnsaveConfirmationDialog = false }, onDismissRequest = onDismiss, title = { Text(stringResource(string.unsave_place)) }, text = { Text( Loading @@ -217,17 +243,16 @@ fun PlaceCardScreen( TextButton( onClick = { viewModel.unsavePlace(displayedPlace) showUnsaveConfirmationDialog = false onDismiss() }) { Text(stringResource(string.unsave_place)) } }, dismissButton = { TextButton( onClick = { showUnsaveConfirmationDialog = false }) { TextButton(onClick = onDismiss) { Text(stringResource(string.cancel_button)) } }) } ) } }