mirror of
https://github.com/owenlejeune/TVTime.git
synced 2025-11-18 01:30:54 -05:00
TVT-39: Add Additional Detail Movie Items
This commit is contained in:
@@ -146,6 +146,8 @@ fun MediaDetailView(
|
|||||||
|
|
||||||
VideosCard(itemId = itemId, service = service)
|
VideosCard(itemId = itemId, service = service)
|
||||||
|
|
||||||
|
AdditionalDetailsCard(itemId = itemId, mediaItem = mediaItem, service = service, type = type)
|
||||||
|
|
||||||
ReviewsCard(itemId = itemId, service = service)
|
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
|
@Composable
|
||||||
private fun CastCard(itemId: Int?, service: DetailService, appNavController: NavController, modifier: Modifier = Modifier) {
|
private fun CastCard(itemId: Int?, service: DetailService, appNavController: NavController, modifier: Modifier = Modifier) {
|
||||||
val castAndCrew = remember { mutableStateOf<CastAndCrew?>(null) }
|
val castAndCrew = remember { mutableStateOf<CastAndCrew?>(null) }
|
||||||
@@ -902,7 +996,9 @@ private fun ReviewsCard(
|
|||||||
.align(Alignment.CenterVertically)
|
.align(Alignment.CenterVertically)
|
||||||
.clickable(
|
.clickable(
|
||||||
onClick = {
|
onClick = {
|
||||||
Toast.makeText(context, "TODO", Toast.LENGTH_SHORT).show()
|
Toast
|
||||||
|
.makeText(context, "TODO", Toast.LENGTH_SHORT)
|
||||||
|
.show()
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
size = 40.dp,
|
size = 40.dp,
|
||||||
|
|||||||
@@ -155,4 +155,12 @@
|
|||||||
<string name="preference_show_poster_titles_subtitle">Show titles on home screen posters</string>
|
<string name="preference_show_poster_titles_subtitle">Show titles on home screen posters</string>
|
||||||
<string name="reviews_title">Reviews</string>
|
<string name="reviews_title">Reviews</string>
|
||||||
<string name="add_a_review_hint">Add a review</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>
|
</resources>
|
||||||
Reference in New Issue
Block a user