diff --git a/app/src/main/java/com/owenlejeune/tvtime/api/tmdb/model/DetailCast.kt b/app/src/main/java/com/owenlejeune/tvtime/api/tmdb/model/DetailCast.kt index f89128f..2d14c8e 100644 --- a/app/src/main/java/com/owenlejeune/tvtime/api/tmdb/model/DetailCast.kt +++ b/app/src/main/java/com/owenlejeune/tvtime/api/tmdb/model/DetailCast.kt @@ -7,12 +7,12 @@ class DetailCast( @SerializedName("id") val id: Int, @SerializedName("episode_count") val episodeCount: Int, @SerializedName("overview") val overview: String, - @SerializedName("name") val name: String, + @SerializedName("name") val name: String?, @SerializedName("media_type") val mediaType: MediaViewType, @SerializedName("poster_path") val posterPath: String?, @SerializedName("first_air_date") val firstAirDate: String, @SerializedName("character") val character: String, - @SerializedName("title") val title: String, + @SerializedName("title") val title: String?, @SerializedName("adult") val isAdult: Boolean, @SerializedName("release_date") val releaseDate: String ) diff --git a/app/src/main/java/com/owenlejeune/tvtime/api/tmdb/model/DetailCrew.kt b/app/src/main/java/com/owenlejeune/tvtime/api/tmdb/model/DetailCrew.kt index 47814aa..f844307 100644 --- a/app/src/main/java/com/owenlejeune/tvtime/api/tmdb/model/DetailCrew.kt +++ b/app/src/main/java/com/owenlejeune/tvtime/api/tmdb/model/DetailCrew.kt @@ -9,11 +9,11 @@ class DetailCrew( @SerializedName("episode_count") val episodeCount: Int, @SerializedName("job") val job: String, @SerializedName("overview") val overview: String, - @SerializedName("name") val name: String, + @SerializedName("name") val name: String?, @SerializedName("media_type") val mediaType: MediaViewType, @SerializedName("first_air_date") val firstAirDate: String, @SerializedName("poster_path") val posterPath: String, - @SerializedName("title") val title: String, + @SerializedName("title") val title: String?, @SerializedName("adult") val isAdult: Boolean, @SerializedName("release_date") val releaseDate: String ) \ No newline at end of file diff --git a/app/src/main/java/com/owenlejeune/tvtime/ui/screens/DetailView.kt b/app/src/main/java/com/owenlejeune/tvtime/ui/screens/DetailView.kt index ed73278..697d3f3 100644 --- a/app/src/main/java/com/owenlejeune/tvtime/ui/screens/DetailView.kt +++ b/app/src/main/java/com/owenlejeune/tvtime/ui/screens/DetailView.kt @@ -1,11 +1,8 @@ package com.owenlejeune.tvtime.ui.screens -import androidx.compose.foundation.ExperimentalFoundationApi -import androidx.compose.foundation.background +import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyRow -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material3.Icon @@ -96,7 +93,7 @@ fun DetailView( start.linkTo(posterImage.end, margin = 8.dp) end.linkTo(parent.end, margin = 16.dp) }, - title = mediaItem.value?.title ?: "" + title = mediaItem.value?.title ?: "", ) BackButton( @@ -226,8 +223,13 @@ fun PersonDetailView( items(credits.value?.cast?.size ?: 0) { i -> val content = credits.value!!.cast[i] + val title = if (content.mediaType == MediaViewType.MOVIE) { + content.title ?: "" + } else { + content.name ?: "" + } TwoLineImageTextCard( - title = content.title, + title = title, subtitle = content.character, modifier = Modifier .width(124.dp) @@ -244,6 +246,54 @@ fun PersonDetailView( } } } + + ContentCard(title = stringResource(R.string.also_known_for_label)) { + Column( + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight() + .padding(12.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + val departments = credits.value?.crew?.map { it.department }?.toSet() ?: emptySet() + if (departments.isNotEmpty()) { + departments.forEach { department -> + Text(text = department, color = MaterialTheme.colorScheme.onSurface) + LazyRow( + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight(), + horizontalArrangement = Arrangement.spacedBy(4.dp) + ) { + val jobsInDepartment = credits.value!!.crew.filter { it.department == department } + items(jobsInDepartment.size) { i -> + val content = jobsInDepartment[i] + val title = if (content.mediaType == MediaViewType.MOVIE) { + content.title ?: "" + } else { + content.name ?: "" + } + TwoLineImageTextCard( + title = title, + subtitle = content.job, + modifier = Modifier + .width(124.dp) + .wrapContentHeight(), + imageUrl = TmdbUtils.getFullPosterPath(content.posterPath), + onItemClicked = { + personId?.let { + appNavController.navigate( + "${MainNavItem.DetailView.route}/${content.mediaType}/${content.id}" + ) + } + } + ) + } + } + } + } + } + } } } } @@ -275,17 +325,20 @@ private fun TitleText(modifier: Modifier, title: String) { .fillMaxWidth(.6f), style = MaterialTheme.typography.headlineMedium, textAlign = TextAlign.Start, - softWrap = true + softWrap = true, + maxLines = 3, + overflow = TextOverflow.Ellipsis ) } @Composable private fun BackButton(modifier: Modifier, appNavController: NavController) { + val start = if (isSystemInDarkTheme()) Color.Black else Color.White IconButton( onClick = { appNavController.popBackStack() }, modifier = modifier .background( - brush = Brush.radialGradient(colors = listOf(Color.Black, Color.Transparent)) + brush = Brush.radialGradient(colors = listOf(start, Color.Transparent)) ) .wrapContentSize() ) { diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml deleted file mode 100644 index 133937c..0000000 --- a/app/src/main/res/values-fr/strings.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - TVTime - - - Films - Télé - Favoris - Réglages - Lecture en cours - Populaire - Les mieux notés - A venir - Aujourd\'hui - À l\'antenne - - - Acteurs - - - Rechercher - Barre de recherche presistante - Gardez la barre de recherche visible à tout moment - Barre de recherche étendue - Gardez la barre de recherche développée à tout moment - Options de développeur - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9a743b0..526b897 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,6 +18,7 @@ Recommended Videos Known For + Also Known For See more See less