TVT-39: Add Additional Detail Movie Items

This commit is contained in:
Owen LeJeune
2022-11-16 11:24:27 -05:00
parent 97d7310bc7
commit 7c0a16b7ea
2 changed files with 105 additions and 1 deletions

View File

@@ -146,6 +146,8 @@ fun MediaDetailView(
VideosCard(itemId = itemId, service = service)
AdditionalDetailsCard(itemId = itemId, mediaItem = mediaItem, service = service, type = type)
ReviewsCard(itemId = itemId, service = service)
}
}
@@ -688,6 +690,98 @@ private fun OverviewCard(itemId: Int?, mediaItem: MutableState<DetailedItem?>, s
}
}
@Composable
private fun AdditionalDetailsCard(
modifier: Modifier = Modifier,
itemId: Int?,
mediaItem: MutableState<DetailedItem?>,
service: DetailService,
type: MediaViewType
) {
mediaItem.value?.let { mi ->
ContentCard(
modifier = modifier,
title = stringResource(R.string.additional_details_title)
) {
Column(
modifier = Modifier
.fillMaxWidth()
.wrapContentHeight()
.padding(vertical = 12.dp, horizontal = 16.dp),
verticalArrangement = Arrangement.spacedBy(8.dp)
) {
AdditionalDetailItem(
title = stringResource(R.string.spoken_languages_title),
subtext = mi.spokenLanguages.map { it.name }.filter { it.isNotEmpty() }.joinToString(separator = ", ")//joinToString(separator = ", ") { it.name }
)
AdditionalDetailItem(
title = stringResource(R.string.original_title_title),
subtext = mi.originalTitle
)
AdditionalDetailItem(
title = stringResource(R.string.production_companies_title),
subtext = mi.productionCompanies.joinToString(separator = ", ") { it.name }
)
AdditionalDetailItem(
title = stringResource(R.string.production_countries_title),
subtext = mi.productionCountries.joinToString(separator = ", ") { it.name },
)
if (type == MediaViewType.MOVIE) {
AdditionalMovieItems(movie = mi as DetailedMovie)
}
}
}
}
}
@Composable
private fun AdditionalMovieItems(
movie: DetailedMovie
) {
AdditionalDetailItem(
title = stringResource(R.string.movie_budget_title),
subtext = "$${movie.budget}"
)
AdditionalDetailItem(
title = stringResource(R.string.movie_revenue_title),
subtext = "$${movie.revenue}",
includeDivider = movie.collection != null
)
movie.collection?.let {
AdditionalDetailItem(
title = stringResource(R.string.movie_collection_title),
subtext = movie.collection.name,
includeDivider = false
)
}
}
@Composable
private fun AdditionalDetailItem(
title: String,
subtext: String,
includeDivider: Boolean = true
) {
Column(
verticalArrangement = Arrangement.spacedBy(8.dp)
) {
Text(
text = title,
fontSize = 16.sp,
color = MaterialTheme.colorScheme.onSurface
)
Text(
text = subtext,
fontSize = 14.sp,
color = MaterialTheme.colorScheme.onSurfaceVariant
)
if (includeDivider) {
Divider()
}
}
}
@Composable
private fun CastCard(itemId: Int?, service: DetailService, appNavController: NavController, modifier: Modifier = Modifier) {
val castAndCrew = remember { mutableStateOf<CastAndCrew?>(null) }
@@ -902,7 +996,9 @@ private fun ReviewsCard(
.align(Alignment.CenterVertically)
.clickable(
onClick = {
Toast.makeText(context, "TODO", Toast.LENGTH_SHORT).show()
Toast
.makeText(context, "TODO", Toast.LENGTH_SHORT)
.show()
}
),
size = 40.dp,

View File

@@ -155,4 +155,12 @@
<string name="preference_show_poster_titles_subtitle">Show titles on home screen posters</string>
<string name="reviews_title">Reviews</string>
<string name="add_a_review_hint">Add a review</string>
<string name="additional_details_title">Additional Details</string>
<string name="original_title_title">Original Title</string>
<string name="spoken_languages_title">Spoken Languages</string>
<string name="production_companies_title">Production Companies</string>
<string name="production_countries_title">Production Countries</string>
<string name="movie_budget_title">Budget</string>
<string name="movie_revenue_title">Revenue</string>
<string name="movie_collection_title">Collection</string>
</resources>