mirror of
https://github.com/owenlejeune/TVTime.git
synced 2025-11-08 12:42:44 -05:00
some small ui fixes
This commit is contained in:
@@ -10,6 +10,9 @@ class DetailPerson(
|
|||||||
@SerializedName("biography") val biography: String,
|
@SerializedName("biography") val biography: String,
|
||||||
@SerializedName("place_of_birth") val birthplace: String?,
|
@SerializedName("place_of_birth") val birthplace: String?,
|
||||||
@SerializedName("adult") val isAdult: Boolean,
|
@SerializedName("adult") val isAdult: Boolean,
|
||||||
|
@SerializedName("also_known_as") val alsoKnownAs: List<String>,
|
||||||
|
@SerializedName("homepage") val homepage: String?,
|
||||||
|
@SerializedName("popularity") val popularity: Float,
|
||||||
id: Int,
|
id: Int,
|
||||||
name: String,
|
name: String,
|
||||||
gender: Gender,
|
gender: Gender,
|
||||||
|
|||||||
@@ -35,11 +35,11 @@ fun StoreRouteButton() {
|
|||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.combinedClickable(
|
.combinedClickable(
|
||||||
onClick = {
|
onClick = {
|
||||||
applicationViewModel.storedRoute.value = applicationViewModel.currentRoute.value
|
applicationViewModel.setStoredRoute(applicationViewModel.currentRoute.value)
|
||||||
Toast.makeText(context, "Stored route \"${applicationViewModel.storedRoute.value}\"", Toast.LENGTH_SHORT).show()
|
Toast.makeText(context, "Stored route \"${applicationViewModel.storedRoute.value}\"", Toast.LENGTH_SHORT).show()
|
||||||
},
|
},
|
||||||
onLongClick = {
|
onLongClick = {
|
||||||
applicationViewModel.storedRoute.value = ""
|
applicationViewModel.setStoredRoute("")
|
||||||
Toast.makeText(context, "Stored route \"\"", Toast.LENGTH_SHORT).show()
|
Toast.makeText(context, "Stored route \"\"", Toast.LENGTH_SHORT).show()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ fun CastCrewListScreen(
|
|||||||
|
|
||||||
MediaResultCard(
|
MediaResultCard(
|
||||||
appNavController = appNavController,
|
appNavController = appNavController,
|
||||||
mediaViewType = type,
|
mediaViewType = MediaViewType.PERSON,
|
||||||
id = item.id,
|
id = item.id,
|
||||||
backdropPath = null,
|
backdropPath = null,
|
||||||
posterPath = TmdbUtils.getFullPosterPath(item.profilePath),
|
posterPath = TmdbUtils.getFullPosterPath(item.profilePath),
|
||||||
|
|||||||
@@ -95,7 +95,8 @@ private fun PersonGalleryView(
|
|||||||
width = 120.dp,
|
width = 120.dp,
|
||||||
url = TmdbUtils.getFullPersonImagePath(image.filePath),
|
url = TmdbUtils.getFullPersonImagePath(image.filePath),
|
||||||
placeholder = Icons.Filled.Person,
|
placeholder = Icons.Filled.Person,
|
||||||
title = ""
|
title = "",
|
||||||
|
modifier = Modifier.padding(5.dp)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import androidx.compose.material3.Text
|
|||||||
import androidx.compose.material3.TopAppBarDefaults
|
import androidx.compose.material3.TopAppBarDefaults
|
||||||
import androidx.compose.material3.rememberTopAppBarState
|
import androidx.compose.material3.rememberTopAppBarState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
@@ -29,6 +30,7 @@ import com.owenlejeune.tvtime.api.tmdb.api.v3.model.MovieCast
|
|||||||
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.TvCast
|
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.TvCast
|
||||||
import com.owenlejeune.tvtime.extensions.bringToFront
|
import com.owenlejeune.tvtime.extensions.bringToFront
|
||||||
import com.owenlejeune.tvtime.extensions.getCalendarYear
|
import com.owenlejeune.tvtime.extensions.getCalendarYear
|
||||||
|
import com.owenlejeune.tvtime.extensions.unlessEmpty
|
||||||
import com.owenlejeune.tvtime.ui.components.BackButton
|
import com.owenlejeune.tvtime.ui.components.BackButton
|
||||||
import com.owenlejeune.tvtime.ui.components.MediaResultCard
|
import com.owenlejeune.tvtime.ui.components.MediaResultCard
|
||||||
import com.owenlejeune.tvtime.ui.components.PillSegmentedControl
|
import com.owenlejeune.tvtime.ui.components.PillSegmentedControl
|
||||||
@@ -36,6 +38,7 @@ import com.owenlejeune.tvtime.ui.components.TVTTopAppBar
|
|||||||
import com.owenlejeune.tvtime.ui.viewmodel.ApplicationViewModel
|
import com.owenlejeune.tvtime.ui.viewmodel.ApplicationViewModel
|
||||||
import com.owenlejeune.tvtime.ui.viewmodel.MainViewModel
|
import com.owenlejeune.tvtime.ui.viewmodel.MainViewModel
|
||||||
import com.owenlejeune.tvtime.utils.TmdbUtils
|
import com.owenlejeune.tvtime.utils.TmdbUtils
|
||||||
|
import com.owenlejeune.tvtime.utils.types.MediaViewType
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
@@ -46,6 +49,10 @@ fun KnownForScreen(
|
|||||||
val mainViewModel = viewModel<MainViewModel>()
|
val mainViewModel = viewModel<MainViewModel>()
|
||||||
val applicationViewModel = viewModel<ApplicationViewModel>()
|
val applicationViewModel = viewModel<ApplicationViewModel>()
|
||||||
|
|
||||||
|
LaunchedEffect(Unit) {
|
||||||
|
mainViewModel.getCastAndCrew(id, MediaViewType.PERSON)
|
||||||
|
}
|
||||||
|
|
||||||
applicationViewModel.statusBarColor.value = MaterialTheme.colorScheme.background
|
applicationViewModel.statusBarColor.value = MaterialTheme.colorScheme.background
|
||||||
applicationViewModel.navigationBarColor.value = MaterialTheme.colorScheme.background
|
applicationViewModel.navigationBarColor.value = MaterialTheme.colorScheme.background
|
||||||
|
|
||||||
@@ -83,7 +90,7 @@ fun KnownForScreen(
|
|||||||
) {
|
) {
|
||||||
item {
|
item {
|
||||||
Row(
|
Row(
|
||||||
modifier = Modifier.padding(start = 16.dp, top = 12.dp, bottom = 12.dp),
|
modifier = Modifier.padding(start = 16.dp, top = 12.dp, end = 12.dp),
|
||||||
horizontalArrangement = Arrangement.spacedBy(8.dp)
|
horizontalArrangement = Arrangement.spacedBy(8.dp)
|
||||||
) {
|
) {
|
||||||
val labels = listOf(stringResource(id = R.string.actor_label), stringResource(id = R.string.production_label))
|
val labels = listOf(stringResource(id = R.string.actor_label), stringResource(id = R.string.production_label))
|
||||||
@@ -98,12 +105,12 @@ fun KnownForScreen(
|
|||||||
items(items) { item ->
|
items(items) { item ->
|
||||||
val additionalDetails = emptyList<String>().toMutableList()
|
val additionalDetails = emptyList<String>().toMutableList()
|
||||||
when (item) {
|
when (item) {
|
||||||
is MovieCast -> additionalDetails.add(stringResource(id = R.string.cast_character_template, item.character))
|
is MovieCast -> additionalDetails.add(stringResource(id = R.string.cast_character_template, item.character.unlessEmpty("-")))
|
||||||
is TvCast -> additionalDetails.add(stringResource(id = R.string.cast_tv_character_template, item.character, item.episodeCount))
|
is TvCast -> additionalDetails.add(stringResource(id = R.string.cast_tv_character_template, item.character.unlessEmpty("-"), item.episodeCount))
|
||||||
is DetailCrew -> additionalDetails.add(stringResource(id = R.string.crew_template, item.job))
|
is DetailCrew -> additionalDetails.add(stringResource(id = R.string.crew_template, item.job))
|
||||||
}
|
}
|
||||||
|
|
||||||
val releaseYear = item.releaseDate?.getCalendarYear() ?: ""
|
val releaseYear = item.releaseDate?.getCalendarYear() ?: stringResource(id = R.string.tba)
|
||||||
|
|
||||||
MediaResultCard(
|
MediaResultCard(
|
||||||
appNavController = appNavController,
|
appNavController = appNavController,
|
||||||
|
|||||||
@@ -729,7 +729,7 @@ private fun CastCard(
|
|||||||
}
|
}
|
||||||
|
|
||||||
Text(
|
Text(
|
||||||
text = "See all cast and crew",
|
text = stringResource(R.string.see_all_cast_and_crew),
|
||||||
fontSize = 12.sp,
|
fontSize = 12.sp,
|
||||||
color = MaterialTheme.colorScheme.inversePrimary,
|
color = MaterialTheme.colorScheme.inversePrimary,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
|||||||
@@ -56,20 +56,23 @@ import com.owenlejeune.tvtime.ui.viewmodel.ApplicationViewModel
|
|||||||
import com.owenlejeune.tvtime.ui.viewmodel.MainViewModel
|
import com.owenlejeune.tvtime.ui.viewmodel.MainViewModel
|
||||||
import com.owenlejeune.tvtime.utils.TmdbUtils
|
import com.owenlejeune.tvtime.utils.TmdbUtils
|
||||||
import com.owenlejeune.tvtime.utils.types.MediaViewType
|
import com.owenlejeune.tvtime.utils.types.MediaViewType
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import java.lang.Integer.min
|
import java.lang.Integer.min
|
||||||
|
|
||||||
private const val TAG = "PeopleDetailScreen"
|
private const val TAG = "PeopleDetailScreen"
|
||||||
|
|
||||||
private suspend fun fetchData(
|
private fun fetchData(
|
||||||
mainViewModel: MainViewModel,
|
mainViewModel: MainViewModel,
|
||||||
id: Int,
|
id: Int,
|
||||||
force: Boolean = false
|
force: Boolean = false
|
||||||
) {
|
) {
|
||||||
mainViewModel.getById(id, MediaViewType.PERSON, force)
|
val scope = CoroutineScope(Dispatchers.IO)
|
||||||
mainViewModel.getExternalIds(id, MediaViewType.PERSON, force)
|
scope.launch { mainViewModel.getById(id, MediaViewType.PERSON, force) }
|
||||||
mainViewModel.getCastAndCrew(id, MediaViewType.PERSON, force)
|
scope.launch { mainViewModel.getExternalIds(id, MediaViewType.PERSON, force) }
|
||||||
mainViewModel.getImages(id, MediaViewType.PERSON, force)
|
scope.launch { mainViewModel.getCastAndCrew(id, MediaViewType.PERSON, force) }
|
||||||
|
scope.launch { mainViewModel.getImages(id, MediaViewType.PERSON, force) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalPagerApi::class, ExperimentalMaterialApi::class)
|
@OptIn(ExperimentalMaterial3Api::class, ExperimentalPagerApi::class, ExperimentalMaterialApi::class)
|
||||||
@@ -78,8 +81,6 @@ fun PersonDetailScreen(
|
|||||||
appNavController: NavController,
|
appNavController: NavController,
|
||||||
personId: Int
|
personId: Int
|
||||||
) {
|
) {
|
||||||
val scope = rememberCoroutineScope()
|
|
||||||
|
|
||||||
val mainViewModel = viewModel<MainViewModel>()
|
val mainViewModel = viewModel<MainViewModel>()
|
||||||
LaunchedEffect(Unit) {
|
LaunchedEffect(Unit) {
|
||||||
fetchData(mainViewModel, personId)
|
fetchData(mainViewModel, personId)
|
||||||
@@ -100,9 +101,7 @@ fun PersonDetailScreen(
|
|||||||
val pullRefreshState = rememberPullRefreshState(
|
val pullRefreshState = rememberPullRefreshState(
|
||||||
refreshing = isRefreshing.value,
|
refreshing = isRefreshing.value,
|
||||||
onRefresh = {
|
onRefresh = {
|
||||||
scope.launch {
|
fetchData(mainViewModel, personId, true)
|
||||||
fetchData(mainViewModel, personId, true)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -191,6 +190,7 @@ private fun CreditsCard(
|
|||||||
|
|
||||||
val creditsMap = remember { mainViewModel.peopleCastMap }
|
val creditsMap = remember { mainViewModel.peopleCastMap }
|
||||||
val credits = creditsMap[personId] ?: emptyList()
|
val credits = creditsMap[personId] ?: emptyList()
|
||||||
|
val sortedCredits = credits.sortedByDescending { it.popularity }
|
||||||
|
|
||||||
ContentCard(
|
ContentCard(
|
||||||
title = stringResource(R.string.known_for_label)
|
title = stringResource(R.string.known_for_label)
|
||||||
@@ -205,8 +205,8 @@ private fun CreditsCard(
|
|||||||
item {
|
item {
|
||||||
Spacer(modifier = Modifier.width(8.dp))
|
Spacer(modifier = Modifier.width(8.dp))
|
||||||
}
|
}
|
||||||
items(min(credits.size, 15)) { i ->
|
items(min(sortedCredits.size, 15)) { i ->
|
||||||
val content = credits[i]
|
val content = sortedCredits[i]
|
||||||
|
|
||||||
TwoLineImageTextCard(
|
TwoLineImageTextCard(
|
||||||
title = content.title,
|
title = content.title,
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.Arrangement
|
|||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
|
import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
@@ -109,19 +110,21 @@ fun SeasonListScreen(
|
|||||||
.verticalScroll(state = rememberScrollState())
|
.verticalScroll(state = rememberScrollState())
|
||||||
) {
|
) {
|
||||||
val seasonsMap = remember { mainViewModel.tvSeasons }
|
val seasonsMap = remember { mainViewModel.tvSeasons }
|
||||||
val seasons = seasonsMap[id] ?: emptyList()
|
val seasons = seasonsMap[id] ?: emptySet()
|
||||||
|
|
||||||
seasons.sortedBy { it.seasonNumber }.forEach { season ->
|
seasons.sortedBy { it.seasonNumber }.forEach { season ->
|
||||||
SeasonSection(season = season)
|
SeasonSection(season = season, singleSeason = isSingleSeason(seasons))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Spacer(modifier = Modifier.height(6.dp))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun SeasonSection(season: Season) {
|
private fun SeasonSection(season: Season, singleSeason: Boolean) {
|
||||||
var isExpanded by remember { mutableStateOf(false) }
|
var isExpanded by remember { mutableStateOf(singleSeason) }
|
||||||
|
|
||||||
Row(
|
Row(
|
||||||
modifier = Modifier.padding(horizontal = 12.dp),
|
modifier = Modifier.padding(horizontal = 12.dp),
|
||||||
@@ -253,4 +256,8 @@ private fun EpisodeItem(episode: Episode) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isSingleSeason(seasons: Set<Season>): Boolean {
|
||||||
|
return seasons.size == 1 || (seasons.size == 2 && seasons.any { it.seasonNumber == 0 })
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.owenlejeune.tvtime.ui.screens
|
package com.owenlejeune.tvtime.ui.screens
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
@@ -43,6 +44,7 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.MutableState
|
import androidx.compose.runtime.MutableState
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
|
import androidx.compose.runtime.mutableIntStateOf
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.runtime.rememberCoroutineScope
|
import androidx.compose.runtime.rememberCoroutineScope
|
||||||
@@ -82,6 +84,7 @@ import com.owenlejeune.tvtime.ui.views.HomeTabRecyclerAdapter
|
|||||||
import com.owenlejeune.tvtime.ui.views.ItemMoveCallback
|
import com.owenlejeune.tvtime.ui.views.ItemMoveCallback
|
||||||
import com.owenlejeune.tvtime.utils.SessionManager
|
import com.owenlejeune.tvtime.utils.SessionManager
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import org.koin.java.KoinJavaComponent.get
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
@@ -436,7 +439,7 @@ fun SpecialFeaturePreferences() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DevPreferences() {
|
fun DevPreferences(preferences: AppPreferences = get(AppPreferences::class.java)) {
|
||||||
if (BuildConfig.DEBUG) {
|
if (BuildConfig.DEBUG) {
|
||||||
val settingsViewModel = viewModel<SettingsViewModel>()
|
val settingsViewModel = viewModel<SettingsViewModel>()
|
||||||
|
|
||||||
@@ -525,6 +528,7 @@ fun DevPreferences() {
|
|||||||
Column {
|
Column {
|
||||||
Text(text = "Current stored test route", fontSize = 18.sp)
|
Text(text = "Current stored test route", fontSize = 18.sp)
|
||||||
Text(text = currentStoredRoute.value.unlessEmpty("---"))
|
Text(text = currentStoredRoute.value.unlessEmpty("---"))
|
||||||
|
Text(text = preferences.storedTestRoute.unlessEmpty("--"))
|
||||||
}
|
}
|
||||||
Spacer(modifier = Modifier.weight(1f))
|
Spacer(modifier = Modifier.weight(1f))
|
||||||
IconButton(
|
IconButton(
|
||||||
@@ -542,6 +546,7 @@ fun DevPreferences() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("AutoboxingStateValueProperty")
|
||||||
@Composable
|
@Composable
|
||||||
private fun WallpaperPicker(
|
private fun WallpaperPicker(
|
||||||
showPopup: MutableState<Boolean>
|
showPopup: MutableState<Boolean>
|
||||||
@@ -551,7 +556,7 @@ private fun WallpaperPicker(
|
|||||||
val settingsViewModel = viewModel<SettingsViewModel>()
|
val settingsViewModel = viewModel<SettingsViewModel>()
|
||||||
|
|
||||||
val wallpaperColors = remember { mutableStateOf<List<Int>>(emptyList()) }
|
val wallpaperColors = remember { mutableStateOf<List<Int>>(emptyList()) }
|
||||||
val selectedWallpaperColor = remember { mutableStateOf(0) }
|
val selectedWallpaperColor = remember { mutableIntStateOf(0) }
|
||||||
LaunchedEffect(true) {
|
LaunchedEffect(true) {
|
||||||
val colors = MonetCompat.getInstance().getAvailableWallpaperColors() ?: emptyList()
|
val colors = MonetCompat.getInstance().getAvailableWallpaperColors() ?: emptyList()
|
||||||
if (colors.isEmpty()) {
|
if (colors.isEmpty()) {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.owenlejeune.tvtime.ui.viewmodel
|
package com.owenlejeune.tvtime.ui.viewmodel
|
||||||
|
|
||||||
|
import androidx.compose.runtime.State
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
@@ -11,20 +12,22 @@ class ApplicationViewModel: ViewModel(), KoinComponent {
|
|||||||
|
|
||||||
private val preferences: AppPreferences by inject()
|
private val preferences: AppPreferences by inject()
|
||||||
|
|
||||||
private object Backer {
|
private object Backer: KoinComponent {
|
||||||
|
private val preferences: AppPreferences by inject()
|
||||||
|
|
||||||
val statusBarColor = mutableStateOf(Color.Transparent)
|
val statusBarColor = mutableStateOf(Color.Transparent)
|
||||||
val navigationBarColor = mutableStateOf(Color.Transparent)
|
val navigationBarColor = mutableStateOf(Color.Transparent)
|
||||||
val currentRoute = mutableStateOf("")
|
val currentRoute = mutableStateOf("")
|
||||||
val storedRoute = mutableStateOf("")
|
val storedRoute = mutableStateOf(preferences.storedTestRoute)
|
||||||
}
|
}
|
||||||
|
|
||||||
val statusBarColor = Backer.statusBarColor
|
val statusBarColor = Backer.statusBarColor
|
||||||
val navigationBarColor = Backer.navigationBarColor
|
val navigationBarColor = Backer.navigationBarColor
|
||||||
val currentRoute = Backer.currentRoute
|
val currentRoute = Backer.currentRoute
|
||||||
val storedRoute = Backer.storedRoute
|
val storedRoute: State<String> = Backer.storedRoute
|
||||||
|
|
||||||
fun setStoredRoute(route: String) {
|
fun setStoredRoute(route: String) {
|
||||||
storedRoute.value = route
|
Backer.storedRoute.value = route
|
||||||
preferences.storedTestRoute = route
|
preferences.storedTestRoute = route
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -252,5 +252,8 @@
|
|||||||
<string name="no_lists_message">You don\'t have any lists yet</string>
|
<string name="no_lists_message">You don\'t have any lists yet</string>
|
||||||
<string name="list_count_label">%1$s (%2$d items)</string>
|
<string name="list_count_label">%1$s (%2$d items)</string>
|
||||||
<string name="days_left">%1$d days</string>
|
<string name="days_left">%1$d days</string>
|
||||||
<string name="next_in_the_mcu_title">Next in the MCU...</string>
|
<string name="next_in_the_mcu_title">Next in the MCU…</string>
|
||||||
|
<string name="see_all_cast_and_crew">See all cast and crew</string>
|
||||||
|
<string name="unreleased">Unreleased</string>
|
||||||
|
<string name="tba">TBA</string>
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user