From 4555fa266d9e7deaf16b1575aeb9613bc480bb52 Mon Sep 17 00:00:00 2001 From: Kurt Himebauch <136133082+xXJSONDeruloXx@users.noreply.github.com> Date: Mon, 19 Oct 2026 08:45:58 -0400 Subject: [PATCH] feat: capsule view with DVD-case store art across all stores (#1117) --- .../launcher/session/SessionPrefs.kt | 2 +- .../com/droiddeck/launcher/ui/StoresPage.kt | 59 +++++++++++++------ app/src/main/res/values-ar/strings.xml | 1 + app/src/main/res/values-b+es+419/strings.xml | 1 + app/src/main/res/values-bg/strings.xml | 1 + app/src/main/res/values-cs/strings.xml | 1 + app/src/main/res/values-da/strings.xml | 1 + app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-el/strings.xml | 1 + app/src/main/res/values-es/strings.xml | 1 + app/src/main/res/values-fi/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values-hi/strings.xml | 1 + app/src/main/res/values-hu/strings.xml | 1 + app/src/main/res/values-in/strings.xml | 1 + app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values-ko/strings.xml | 1 + app/src/main/res/values-ms/strings.xml | 1 + app/src/main/res/values-nb/strings.xml | 1 + app/src/main/res/values-nl/strings.xml | 1 + app/src/main/res/values-pl/strings.xml | 1 + app/src/main/res/values-pt-rPT/strings.xml | 1 + app/src/main/res/values-pt/strings.xml | 1 + app/src/main/res/values-ro/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-sv/strings.xml | 1 + app/src/main/res/values-th/strings.xml | 1 + app/src/main/res/values-tr/strings.xml | 1 + app/src/main/res/values-uk/strings.xml | 1 + app/src/main/res/values-vi/strings.xml | 1 + app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values-zh-rHK/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 35 files changed, 76 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/droiddeck/launcher/session/SessionPrefs.kt b/app/src/main/java/com/droiddeck/launcher/session/SessionPrefs.kt index 49aa2e9ba..4c4cd9808 100644 --- a/app/src/main/java/com/droiddeck/launcher/session/SessionPrefs.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/SessionPrefs.kt @@ -119,7 +119,7 @@ object SessionPrefs { } val STORES_SORTS = listOf("lastPlayed", "recentlyInstalled", "titleAsc", "titleDesc", "sizeDesc", "sizeAsc", "releaseDateDesc") - val STORES_VIEWS = listOf("cards", "list") + val STORES_VIEWS = listOf("cards", "capsules", "list") const val STORES_OPEN_LIBRARY = "library" const val STORES_OPEN_STORE = "store" diff --git a/app/src/main/java/com/droiddeck/launcher/ui/StoresPage.kt b/app/src/main/java/com/droiddeck/launcher/ui/StoresPage.kt index 2feda7597..3933450d4 100644 --- a/app/src/main/java/com/droiddeck/launcher/ui/StoresPage.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/StoresPage.kt @@ -90,6 +90,7 @@ import androidx.compose.material.icons.automirrored.filled.Login import androidx.compose.material.icons.filled.GridView import androidx.compose.material.icons.filled.Sort import androidx.compose.material.icons.filled.ViewList +import androidx.compose.material.icons.filled.ViewModule import com.droiddeck.launcher.stores.sortCatalogItems import com.droiddeck.launcher.stores.retainCatalogOrder import androidx.compose.foundation.layout.widthIn @@ -803,6 +804,8 @@ private fun Storefront( val headerItems = 1 + (if (sizeSortPending) 1 else 0) + (if (StoresState.status[store] != null) 1 else 0) + (if (StoresState.problems[store] != null) 1 else 0) val listMode = s.storesView == "list" && tab == "library" + val capsules = s.storesView == "capsules" && tab == "library" + val tileWidth = if (capsules) CapsuleWidth else CardWidth val card: @Composable (CatalogItem) -> Unit = { item -> val first = if (showGrid) item.key == visible.firstOrNull()?.key else !firstPlaced firstPlaced = true @@ -834,12 +837,12 @@ private fun Storefront( } } if (listMode) GameListRow(item, store, installedKeys, onOpen, first, navigation) - else GameCard(item, store, s, a, installedKeys, onOpen, first, navigation) + else GameCard(item, store, s, a, installedKeys, onOpen, first, navigation, capsule = capsules) } LazyVerticalGrid( - columns = if (listMode) GridCells.Fixed(1) else GridCells.Adaptive(CardWidth), state = grid, modifier = Modifier.fillMaxSize().focusGroup().onSizeChanged { + columns = if (listMode) GridCells.Fixed(1) else GridCells.Adaptive(tileWidth), state = grid, modifier = Modifier.fillMaxSize().focusGroup().onSizeChanged { val gap = with(density) { 10.dp.roundToPx() } - val minimum = with(density) { (if (listMode) CardWidth * 2 else CardWidth).roundToPx() } + val minimum = with(density) { (if (listMode) CardWidth * 2 else tileWidth).roundToPx() } columns = ((it.width + gap) / (minimum + gap)).toInt().coerceAtLeast(1) }, horizontalArrangement = Arrangement.spacedBy(10.dp), verticalArrangement = Arrangement.spacedBy(10.dp), @@ -1094,12 +1097,13 @@ private fun SortButton(s: FrontEndState, a: FrontEndActions) { @Composable private fun ViewButton(s: FrontEndState, a: FrontEndActions) { - val list = s.storesView == "list" + val views = SessionPrefs.STORES_VIEWS + val next = views[(views.indexOf(s.storesView) + 1) % views.size] HeaderIconButton( - if (list) stringResource(R.string.stores_view_cards) else stringResource(R.string.stores_view_list), - if (list) Icons.Filled.GridView else Icons.Filled.ViewList, + stringResource(when (next) { "capsules" -> R.string.stores_view_capsules; "list" -> R.string.stores_view_list; else -> R.string.stores_view_cards }), + when (next) { "capsules" -> Icons.Filled.ViewModule; "list" -> Icons.Filled.ViewList; else -> Icons.Filled.GridView }, "view", - ) { a.onStoresView(if (list) "cards" else "list") } + ) { a.onStoresView(next) } } @Composable @@ -1226,9 +1230,13 @@ private fun LazyGridScope.storeGrid(games: List, empty: String, car } private val CardWidth = 112.dp +private val CapsuleWidth = 92.dp @Composable -private fun GameCard(item: CatalogItem, store: Store, s: FrontEndState, a: FrontEndActions, installedKeys: Set, onOpen: (String) -> Unit, first: Boolean = false, navigation: Modifier = Modifier) { +private fun GameCard( + item: CatalogItem, store: Store, s: FrontEndState, a: FrontEndActions, installedKeys: Set, onOpen: (String) -> Unit, + first: Boolean = false, navigation: Modifier = Modifier, capsule: Boolean = false, +) { val ctx = LocalContext.current val colors = MaterialTheme.colorScheme val pal = LocalPalette.current @@ -1241,7 +1249,8 @@ private fun GameCard(item: CatalogItem, store: Store, s: FrontEndState, a: Front val placed = remember { arrayOfNulls(1) } val corner = with(androidx.compose.ui.platform.LocalDensity.current) { 10.dp.toPx() } val open = { - placed[0]?.takeIf { it.isAttached }?.let { StoresMotion.markCard(CardMark(item.key, it.boundsInRoot(), corner, item.imageUrl ?: item.tallImageUrl)) } + val art = if (capsule) item.tallImageUrl ?: item.imageUrl else item.imageUrl ?: item.tallImageUrl + placed[0]?.takeIf { it.isAttached }?.let { StoresMotion.markCard(CardMark(item.key, it.boundsInRoot(), corner, art)) } onOpen(item.key) } val screen = with(androidx.compose.ui.platform.LocalDensity.current) { androidx.compose.ui.platform.LocalConfiguration.current.screenHeightDp.dp.toPx() } @@ -1259,7 +1268,7 @@ private fun GameCard(item: CatalogItem, store: Store, s: FrontEndState, a: Front .clip(RoundedCornerShape(10.dp)).glideBorder(hot, RoundedCornerShape(10.dp), pal.signal, pal.line) .hoverable(src).clickable(interactionSource = src, indication = LocalIndication.current, onClick = open).controllerConfirm(onClick = open), ) { - CardFace(item, download, hot) { CardMarker(item, installed, download) } + CardFace(item, download, hot, capsule) { CardMarker(item, installed, download, compact = capsule) } } } @@ -1281,13 +1290,28 @@ private val CardStrip = 26.dp @OptIn(androidx.compose.foundation.ExperimentalFoundationApi::class) @Composable -private fun CardFace(item: CatalogItem, download: com.droiddeck.launcher.stores.download.DownloadEntry?, hot: Boolean, marker: @Composable () -> Unit) { - val url = item.imageUrl ?: item.tallImageUrl +private fun CardFace( + item: CatalogItem, download: com.droiddeck.launcher.stores.download.DownloadEntry?, hot: Boolean, capsule: Boolean = false, + marker: @Composable () -> Unit, +) { + val url = if (capsule) item.tallImageUrl ?: item.imageUrl else item.imageUrl ?: item.tallImageUrl val blurs = android.os.Build.VERSION.SDK_INT >= 31 + var landscape by remember(url) { mutableStateOf(false) } BoxWithConstraints(Modifier.fillMaxWidth()) { - val total = maxWidth * 9f / 16f + CardStrip + val total = if (capsule) maxWidth * 7f / 5f + CardStrip else maxWidth * 9f / 16f + CardStrip Box(Modifier.fillMaxWidth().height(total).background(Color(0xFF101318)).then(if (url == null) Modifier.background(artBrush(hueOf(item.title))) else Modifier)) { - if (url != null) AsyncImage(model = url, contentDescription = null, contentScale = ContentScale.Crop, modifier = Modifier.matchParentSize()) + if (url != null && capsule && landscape) { + // Stores without portrait covers (itch) would lose most of the art to a portrait crop. + AsyncImage(model = url, contentDescription = null, contentScale = ContentScale.Crop, modifier = Modifier.matchParentSize().blur(24.dp)) + Spacer(Modifier.matchParentSize().background(Color.Black.copy(alpha = if (blurs) 0.35f else 0.7f))) + AsyncImage(model = url, contentDescription = null, contentScale = ContentScale.Fit, modifier = Modifier.matchParentSize().padding(bottom = CardStrip)) + } else if (url != null) AsyncImage( + model = url, contentDescription = null, contentScale = ContentScale.Crop, modifier = Modifier.matchParentSize(), + onSuccess = { r -> + val art = r.result.drawable + if (capsule && art.intrinsicWidth > 0 && art.intrinsicHeight > 0) landscape = art.intrinsicWidth > art.intrinsicHeight * 0.95f + }, + ) Box(Modifier.align(Alignment.BottomCenter).fillMaxWidth().height(CardStrip).clipToBounds()) { if (url != null) AsyncImage( model = url, contentDescription = null, contentScale = ContentScale.Crop, @@ -1315,7 +1339,7 @@ private fun CardFace(item: CatalogItem, download: com.droiddeck.launcher.stores. } @Composable -private fun CardMarker(item: CatalogItem, installed: Boolean, download: com.droiddeck.launcher.stores.download.DownloadEntry?) { +private fun CardMarker(item: CatalogItem, installed: Boolean, download: com.droiddeck.launcher.stores.download.DownloadEntry?, compact: Boolean = false) { val colors = MaterialTheme.colorScheme val pal = LocalPalette.current val small = 10.sp @@ -1323,12 +1347,13 @@ private fun CardMarker(item: CatalogItem, installed: Boolean, download: com.droi installed -> Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(3.dp)) { val ctx = LocalContext.current val game = StoresState.installedGame(item.store, item.id) - if (game != null) androidx.compose.runtime.LaunchedEffect(item.key) { com.droiddeck.launcher.stores.StoreSizes.requestDisk(ctx, item.key, game) } - com.droiddeck.launcher.stores.StoreSizes.onDisk[item.key]?.let { Text(formatBytes(it), fontSize = 11.sp, fontWeight = FontWeight.Bold, color = Color.White, maxLines = 1) } + if (game != null && !compact) androidx.compose.runtime.LaunchedEffect(item.key) { com.droiddeck.launcher.stores.StoreSizes.requestDisk(ctx, item.key, game) } + if (!compact) com.droiddeck.launcher.stores.StoreSizes.onDisk[item.key]?.let { Text(formatBytes(it), fontSize = 11.sp, fontWeight = FontWeight.Bold, color = Color.White, maxLines = 1) } Icon(Icons.Filled.Check, stringResource(R.string.stores_installed_chip), tint = pal.good, modifier = Modifier.size(11.dp)) } download != null -> Text("${download.percent}%", fontSize = small, fontWeight = FontWeight.Bold, color = pal.signal, maxLines = 1) item.owned && StoresState.isUnfinished(item) -> Text(stringResource(R.string.stores_resume), fontSize = small, fontWeight = FontWeight.Bold, color = pal.signal, maxLines = 1) + item.owned && compact -> Unit item.owned -> com.droiddeck.launcher.stores.StoreSizes.size(item).takeIf { it > 0 }?.let { Text(formatBytes(it), fontSize = 11.sp, fontWeight = FontWeight.Bold, color = Color.White, maxLines = 1) } item.isFree -> Text(stringResource(R.string.stores_free), fontSize = small, fontWeight = FontWeight.Bold, color = pal.good, maxLines = 1) item.isDiscounted -> Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(4.dp)) { diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 36caa8aee..e496994a4 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -2067,6 +2067,7 @@ تاريخ الإصدار عرض القائمة عرض البطاقات + عرض الأغلفة إظهار المحتوى للبالغين Epic EOS diff --git a/app/src/main/res/values-b+es+419/strings.xml b/app/src/main/res/values-b+es+419/strings.xml index da88522af..fab4a066f 100644 --- a/app/src/main/res/values-b+es+419/strings.xml +++ b/app/src/main/res/values-b+es+419/strings.xml @@ -2024,6 +2024,7 @@ Fecha de lanzamiento Vista de lista Vista de tarjetas + Vista de portadas Mostrar contenido para adultos Epic EOS diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index a76a3cd91..5e375bca2 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -1983,6 +1983,7 @@ Дата на издаване Изглед на списък Изглед с карти + Изглед с обложки Показвай съдържание за възрастни Epic EOS diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 5ab150110..b4d674c32 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -2025,6 +2025,7 @@ Datum vydání Zobrazení seznamu Zobrazení karet + Zobrazení obalů Zobrazovat obsah pro dospělé Epic EOS diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 77f4eb7a0..3b2bc8979 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -1983,6 +1983,7 @@ Udgivelsesdato Listevisning Kortvisning + Omslagsvisning Vis indhold for voksne Epic EOS diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 9a41a6627..3a4c61b17 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -1972,6 +1972,7 @@ Erscheinungsdatum Listenansicht Kartenansicht + Coveransicht Inhalte für Erwachsene anzeigen Epic EOS diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 430fb46b0..4f4bfaa44 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -1983,6 +1983,7 @@ Ημερομηνία κυκλοφορίας Προβολή λίστας Προβολή καρτών + Προβολή εξωφύλλων Εμφάνιση περιεχομένου για ενήλικες Epic EOS diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 4d6ba89f8..09660256e 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -2001,6 +2001,7 @@ Fecha de lanzamiento Vista de lista Vista de tarjetas + Vista de portadas Mostrar contenido para adultos Epic EOS diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index bd2f9d176..88d810a69 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -1983,6 +1983,7 @@ Julkaisupäivä Luettelonäkymä Korttinäkymä + Kansinäkymä Näytä aikuisille tarkoitettu sisältö Epic EOS diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 7d8b89eca..9393da87c 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -2001,6 +2001,7 @@ Date de sortie Vue liste Vue cartes + Vue jaquettes Afficher le contenu pour adultes Epic EOS diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 75adfcb7c..91fae22a1 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -1983,6 +1983,7 @@ रिलीज़ तिथि सूची दृश्य कार्ड दृश्य + कवर व्यू वयस्क कंटेंट दिखाएं Epic EOS diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index fa569cd9b..48809c616 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -1983,6 +1983,7 @@ Megjelenés dátuma Listanézet Kártyanézet + Borítónézet Felnőtt tartalom megjelenítése Epic EOS diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index a14662f53..85abaeec8 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -1962,6 +1962,7 @@ Tanggal rilis Tampilan daftar Tampilan kartu + Tampilan sampul Tampilkan konten dewasa Epic EOS diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 301076df7..19fe2f598 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -1993,6 +1993,7 @@ Data di uscita Visualizzazione elenco Visualizzazione schede + Vista copertine Mostra contenuti per adulti Epic EOS diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index af2e8bba6..c39625cd3 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -1962,6 +1962,7 @@ リリース日 リスト表示 カード表示 + パッケージ表示 成人向けコンテンツを表示 Epic EOS diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index aeb066798..8e2508ebe 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -1962,6 +1962,7 @@ 출시일 목록 보기 카드 보기 + 표지 보기 성인용 콘텐츠 표시 Epic EOS diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml index afd271efc..537bd5421 100644 --- a/app/src/main/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -1962,6 +1962,7 @@ Tarikh keluaran Paparan senarai Paparan kad + Paparan kulit Papar kandungan matang Epic EOS diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 1649f4e4a..977db283c 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -1983,6 +1983,7 @@ Utgivelsesdato Listevisning Kortvisning + Omslagsvisning Vis innhold for voksne Epic EOS diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 3ac9d8029..f841a1878 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -1983,6 +1983,7 @@ Releasedatum Lijstweergave Kaartweergave + Hoesweergave Inhoud voor volwassenen tonen Epic EOS diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 5828bb5a1..d89698468 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -2025,6 +2025,7 @@ Data wydania Widok listy Widok kart + Widok okładek Pokaż treści dla dorosłych Epic EOS diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index eb3dbde1e..55d8d0108 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -1993,6 +1993,7 @@ Data de lançamento Vista de lista Vista de cartões + Vista de capas Mostrar conteúdo para adultos Epic EOS diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 9119ead1b..dd27961db 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -1993,6 +1993,7 @@ Data de lançamento Vista de lista Vista de cartões + Visualização de capas Mostrar conteúdo adulto Epic EOS diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index e16c6174a..637ffea5e 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -2004,6 +2004,7 @@ Data lansării Vizualizare listă Vizualizare carduri + Vizualizare coperți Arată conținutul pentru adulți Epic EOS diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 4c3e71733..b5a52740a 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -2022,6 +2022,7 @@ Дата выхода Вид списком Вид карточками + Вид обложек Показывать контент для взрослых Epic EOS diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 39f63eef1..6e97abd03 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -1983,6 +1983,7 @@ Utgivningsdatum Listvy Kortvy + Omslagsvy Visa innehåll för vuxna Epic EOS diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index ced2fb961..24a52fc9e 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -1962,6 +1962,7 @@ วันวางจำหน่าย มุมมองรายการ มุมมองการ์ด + มุมมองปก แสดงเนื้อหาสำหรับผู้ใหญ่ Epic EOS diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 42da82a97..424db34ea 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -1972,6 +1972,7 @@ Çıkış tarihi Liste görünümü Kart görünümü + Kapak görünümü Yetişkin içeriği göster Epic EOS diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 03eed1e71..2d79d0a94 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -2025,6 +2025,7 @@ Дата виходу Вигляд списком Вигляд картками + Вигляд обкладинок Показувати контент для дорослих Epic EOS diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 9a49e869b..bf2c67811 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1962,6 +1962,7 @@ Ngày phát hành Chế độ danh sách Chế độ thẻ + Chế độ xem bìa Hiện nội dung người lớn Epic EOS diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 65896e07e..206e30f1d 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -2038,6 +2038,7 @@ 发行日期 列表视图 卡片视图 + 封面视图 显示成人内容 Epic EOS diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 1618d8501..16f54ea4e 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -1962,6 +1962,7 @@ 發行日期 列表檢視 卡片檢視 + 封面檢視 顯示成人內容 Epic EOS diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 04dc2a74e..95e5dd915 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1962,6 +1962,7 @@ 發行日期 列表檢視 卡片檢視 + 封面檢視 顯示成人內容 Epic EOS diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 44fb4fc2a..603099d9f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2026,6 +2026,7 @@ Release date List view Card view + Capsule view Show mature content Epic EOS