diff --git a/README.md b/README.md index 23dfb0b5..b8f04e12 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ Licensed under GPL-2.0, the same licence as upstream (see [LICENSE](LICENSE)). Wolfskin is an Android TV client for one household. It is released through Forgejo releases on this repo, and it tracks upstream by merging each upstream release tag. +The app uses Wolfskin launcher artwork and a lilac-on-`#07070a` theme by default on a fresh install. Existing theme choices and all upstream colour themes remain available under Settings → App theme. Settings → About credits and links to Wholphin by damontecres. + --- # Wholphin - an OSS Android TV client for Jellyfin diff --git a/app/src/debug/res/values/strings.xml b/app/src/debug/res/values/strings.xml index 606329c9..cb6c15c6 100644 --- a/app/src/debug/res/values/strings.xml +++ b/app/src/debug/res/values/strings.xml @@ -1,4 +1,4 @@ - Wholphin (Debug) + Wolfskin (Debug) diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png index 87623e5e..dfc380e1 100644 Binary files a/app/src/main/ic_launcher-playstore.png and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/java/com/github/damontecres/wholphin/MainActivity.kt b/app/src/main/java/com/github/damontecres/wholphin/MainActivity.kt index 62f0e39b..a872d3be 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/MainActivity.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/MainActivity.kt @@ -63,7 +63,7 @@ import com.github.damontecres.wholphin.ui.nav.Destination import com.github.damontecres.wholphin.ui.playback.PlayExternalViewModel import com.github.damontecres.wholphin.ui.showToast import com.github.damontecres.wholphin.ui.theme.WholphinTheme -import com.github.damontecres.wholphin.ui.theme.colors.PurpleThemeColors +import com.github.damontecres.wholphin.ui.theme.colors.WolfskinThemeColors import com.github.damontecres.wholphin.ui.util.ProvideLocalClock import com.github.damontecres.wholphin.util.DebugLogTree import com.github.damontecres.wholphin.util.ExceptionHandler @@ -230,7 +230,7 @@ class MainActivity : AppCompatActivity() { viewModel.appStart(intent) setContent { - MaterialTheme(colorScheme = PurpleThemeColors.darkScheme) { + MaterialTheme(colorScheme = WolfskinThemeColors.darkScheme) { Surface(Modifier.fillMaxSize()) { val userPreferences by userPreferencesService.flow.collectAsState(null) if (userPreferences == null) { diff --git a/app/src/main/java/com/github/damontecres/wholphin/preferences/AppPreference.kt b/app/src/main/java/com/github/damontecres/wholphin/preferences/AppPreference.kt index 4213fe94..a9d0f11e 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/preferences/AppPreference.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/preferences/AppPreference.kt @@ -506,7 +506,7 @@ sealed interface AppPreference { val ThemeColors = AppChoicePreference( title = R.string.app_theme, - defaultValue = AppThemeColors.PURPLE, + defaultValue = AppThemeColors.WOLFSKIN, getter = { it.interfacePreferences.appThemeColors }, setter = { prefs, value -> prefs.updateInterfacePreferences { appThemeColors = value } diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/cards/WatchedIcon.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/cards/WatchedIcon.kt index ce8952a7..17649be9 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/cards/WatchedIcon.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/cards/WatchedIcon.kt @@ -41,6 +41,7 @@ fun WatchedIconBackground(): Color = when (LocalTheme.current) { AppThemeColors.UNRECOGNIZED, AppThemeColors.PURPLE, + AppThemeColors.WOLFSKIN, AppThemeColors.BLUE, AppThemeColors.GREEN, AppThemeColors.ORANGE, @@ -55,6 +56,8 @@ fun WatchedIconBackground(): Color = @Composable fun WatchedIconColor(): Color = when (LocalTheme.current) { + AppThemeColors.WOLFSKIN -> MaterialTheme.colorScheme.onPrimary + AppThemeColors.UNRECOGNIZED, AppThemeColors.PURPLE, AppThemeColors.BLUE, diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/components/SliderBar.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/components/SliderBar.kt index 9021e213..f2addcd8 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/components/SliderBar.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/components/SliderBar.kt @@ -143,6 +143,7 @@ fun sliderActiveColor(focused: Boolean): Color { return when (theme) { AppThemeColors.UNRECOGNIZED, AppThemeColors.PURPLE, + AppThemeColors.WOLFSKIN, AppThemeColors.BLUE, AppThemeColors.GREEN, AppThemeColors.ORANGE, @@ -179,6 +180,7 @@ fun sliderInactiveColor(focused: Boolean): Color { return when (theme) { AppThemeColors.UNRECOGNIZED, AppThemeColors.PURPLE, + AppThemeColors.WOLFSKIN, -> { MaterialTheme.colorScheme.border .copy(alpha = .25f) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/nav/NavDrawer.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/nav/NavDrawer.kt index efbf1a4b..17906fe2 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/nav/NavDrawer.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/nav/NavDrawer.kt @@ -769,6 +769,7 @@ fun navItemColor( when (theme) { AppThemeColors.UNRECOGNIZED, AppThemeColors.PURPLE, + AppThemeColors.WOLFSKIN, AppThemeColors.BLUE, AppThemeColors.GREEN, AppThemeColors.ORANGE, diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesContent.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesContent.kt index d95d5aba..a21405c2 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesContent.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesContent.kt @@ -271,6 +271,9 @@ fun PreferencesContent( .fillMaxWidth() .padding(top = 8.dp, bottom = 4.dp), ) + if (group.title == R.string.about) { + WolfskinAbout() + } } val groupPreferences = group.preferences + diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/SwitchPreference.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/SwitchPreference.kt index daf6fa07..43e213ea 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/SwitchPreference.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/SwitchPreference.kt @@ -70,6 +70,7 @@ fun SwitchColors(): SwitchColors { return when (theme) { AppThemeColors.UNRECOGNIZED, AppThemeColors.PURPLE, + AppThemeColors.WOLFSKIN, AppThemeColors.BLUE, -> { SwitchDefaults.colors() diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/WolfskinAbout.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/WolfskinAbout.kt new file mode 100644 index 00000000..a0814180 --- /dev/null +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/WolfskinAbout.kt @@ -0,0 +1,28 @@ +package com.github.damontecres.wholphin.ui.preferences + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import androidx.tv.material3.MaterialTheme +import androidx.tv.material3.Text +import com.github.damontecres.wholphin.R +import com.github.damontecres.wholphin.ui.components.TextButton + +/** Fork identity and a focusable link to the upstream project. */ +@Composable +fun WolfskinAbout() { + val uriHandler = LocalUriHandler.current + val upstreamUrl = stringResource(R.string.wolfskin_upstream_url) + Column(verticalArrangement = Arrangement.spacedBy(8.dp)) { + Text( + text = stringResource(R.string.app_name_long), + style = MaterialTheme.typography.headlineMedium, + ) + TextButton(onClick = { uriHandler.openUri(upstreamUrl) }) { + Text(stringResource(R.string.wolfskin_upstream_credit)) + } + } +} diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/theme/Theme.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/theme/Theme.kt index 8ae95b25..8cce37e5 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/theme/Theme.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/theme/Theme.kt @@ -13,9 +13,10 @@ import com.github.damontecres.wholphin.ui.theme.colors.OledThemeColors import com.github.damontecres.wholphin.ui.theme.colors.OrangeThemeColors import com.github.damontecres.wholphin.ui.theme.colors.PurpleThemeColors import com.github.damontecres.wholphin.ui.theme.colors.RedThemeColors +import com.github.damontecres.wholphin.ui.theme.colors.WolfskinThemeColors val LocalTheme = - compositionLocalOf { AppThemeColors.PURPLE } + compositionLocalOf { AppThemeColors.WOLFSKIN } fun getThemeColors(appThemeColors: AppThemeColors): ThemeColors = when (appThemeColors) { @@ -27,13 +28,14 @@ fun getThemeColors(appThemeColors: AppThemeColors): ThemeColors = AppThemeColors.BOLD_BLUE -> BoldBlueThemeColors AppThemeColors.RED -> RedThemeColors AppThemeColors.BROWN -> BrownThemeColors - AppThemeColors.UNRECOGNIZED -> PurpleThemeColors + AppThemeColors.WOLFSKIN -> WolfskinThemeColors + AppThemeColors.UNRECOGNIZED -> WolfskinThemeColors } @Composable fun WholphinTheme( darkTheme: Boolean = true, - appThemeColors: AppThemeColors = AppThemeColors.PURPLE, + appThemeColors: AppThemeColors = AppThemeColors.WOLFSKIN, content: @Composable () -> Unit, ) { val themeColors = getThemeColors(appThemeColors) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/theme/colors/WolfskinThemeColors.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/theme/colors/WolfskinThemeColors.kt new file mode 100644 index 00000000..ee0a77b5 --- /dev/null +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/theme/colors/WolfskinThemeColors.kt @@ -0,0 +1,59 @@ +package com.github.damontecres.wholphin.ui.theme.colors + +import androidx.compose.ui.graphics.Color +import com.github.damontecres.wholphin.ui.theme.ThemeColors + +/** Lilac accents on near-black surfaces, with upstream Purple available separately. */ +val WolfskinThemeColors = + object : ThemeColors { + private val background = Color(0xFF07070A) + private val lilac = Color(0xFFD2BCFF) + private val onLilac = Color(0xFF241334) + private val container = Color(0xFF382A49) + private val onContainer = Color(0xFFEADCFF) + private val surfaceVariant = Color(0xFF24202D) + + override val lightSchemeMaterial = PurpleThemeColors.lightSchemeMaterial + override val lightScheme = PurpleThemeColors.lightScheme + + override val darkSchemeMaterial = + PurpleThemeColors.darkSchemeMaterial.copy( + primary = lilac, + onPrimary = onLilac, + primaryContainer = container, + onPrimaryContainer = onContainer, + secondary = lilac, + onSecondary = onLilac, + secondaryContainer = container, + onSecondaryContainer = onContainer, + tertiary = lilac, + onTertiary = onLilac, + tertiaryContainer = container, + onTertiaryContainer = onContainer, + background = background, + surface = background, + surfaceVariant = surfaceVariant, + inversePrimary = Color(0xFF705090), + ) + + override val darkScheme = + PurpleThemeColors.darkScheme.copy( + primary = lilac, + onPrimary = onLilac, + primaryContainer = container, + onPrimaryContainer = onContainer, + secondary = lilac, + onSecondary = onLilac, + secondaryContainer = container, + onSecondaryContainer = onContainer, + tertiary = lilac, + onTertiary = onLilac, + tertiaryContainer = container, + onTertiaryContainer = onContainer, + background = background, + surface = background, + surfaceVariant = surfaceVariant, + inversePrimary = Color(0xFF705090), + border = lilac.copy(alpha = .75f), + ) + } diff --git a/app/src/main/proto/WholphinDataStore.proto b/app/src/main/proto/WholphinDataStore.proto index 38f6099c..0c3b5cb3 100644 --- a/app/src/main/proto/WholphinDataStore.proto +++ b/app/src/main/proto/WholphinDataStore.proto @@ -123,6 +123,7 @@ enum AppThemeColors { OLED_BLACK = 5; RED = 6; BROWN = 7; + WOLFSKIN = 8; } enum EdgeStyle{ diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_banner.xml b/app/src/main/res/mipmap-anydpi-v26/ic_banner.xml index 4c5f707b..ec3f55e3 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_banner.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_banner.xml @@ -1,9 +1,4 @@ - - - - - - + diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp index 5b7669dc..4ac23262 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp index 8e05a03a..de1628cc 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp index e6a5972a..df5faba9 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp index f44d1093..415cf194 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp index 9e9214e8..d9df942a 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp index 3766935e..dea8ff64 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_banner.png b/app/src/main/res/mipmap-xhdpi/ic_banner.png index 4fa742db..ee42b91e 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_banner.png and b/app/src/main/res/mipmap-xhdpi/ic_banner.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_banner_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_banner_foreground.png index 52b72c47..ee42b91e 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_banner_foreground.png and b/app/src/main/res/mipmap-xhdpi/ic_banner_foreground.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp index ce75a196..924b40eb 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp index 22298ad1..e218f8bd 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp index 3f7c7e29..40674eff 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp index e5cef34d..6f5be441 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp index fafcb4f1..8c1935c7 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp index 5c1a8e36..48a4e286 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp index 90341396..1cf49fb6 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp index dbe5821e..afc41a8b 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp index 2ef5c7d0..122a33e0 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 7de6e9ac..d71123be 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -489,8 +489,8 @@ Vyplnit Vyplnit šířku Vyplnit výšku - Výchozí předvolba Wholphin - Wholphin kompaktní + Výchozí předvolba Wolfskin + Wolfskin kompaktní Obrázky náhledů seriálů Obrázky náhledů epizod Nejnižší diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 870d8c85..a6efeb91 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -538,8 +538,8 @@ Fyld Fyld bredde Fyld højde - Wholphin-standard - Wholphin kompakt + Wolfskin-standard + Wolfskin kompakt Seriens miniaturebilleder Episode-miniaturebilleder Laveste @@ -637,7 +637,7 @@ Vælg alle Adskil typer Foretræk logoer som titler - Wholphin er opdateret til %s + Wolfskin er opdateret til %s Fjern fra Fortsæt med at se Fjern serien fra Næste Vis serier fjernet fra Næste diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 3d745172..f4523d02 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -511,8 +511,8 @@ Animieren Breite ausfüllen Höhe ausfüllen - Wholphin Standard - Wholphin Kompakt + Wolfskin Standard + Wolfskin Kompakt Niedrigste Niedrig Mittel @@ -580,7 +580,7 @@ Fortfahren Verschiedene Arten Bevorzugt Logo statt Titel anzeigen - Wholphin aktualisiert auf %s + Wolfskin aktualisiert auf %s Von \"Weiterschauen\" entfernen Serie aus \"Als Nächstes anschauen\" entfernen Mehr anzeigen diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 0dbe1e87..696ad927 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -599,7 +599,7 @@ Eliminar de la cola Separar por tipos Preferir logotipos para los títulos - Wholphin se ha actualizado a la versión %s + Wolfskin se ha actualizado a la versión %s Ver más Descubrir series Descubrir películas diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 168b914e..8fc29c91 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -535,8 +535,8 @@ Täida Täida laiuses Täida kõrguses - Wholphini vaikeseadistus - Wholphini kompaktne vaade + Wolfskini vaikeseadistus + Wolfskini kompaktne vaade Sarja pisipildid Osa pisipildid Vaikseim @@ -580,7 +580,7 @@ Jätka Eraldi tüübid Pealkirjade puhul eelista logode kuvamist - Wholphin on uuendatud versioonini %s + Wolfskin on uuendatud versioonini %s Eemalda „Jätka vaatamist“ valikust Eemalda sari valikust „Järgmisena esitamisel“ Vaata sarja, mis sai eemaldatud valikust „Järgmisena esitamisel“ diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 4d7506ed..898f8a10 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -507,8 +507,8 @@ Remplir Largeur de remplissage Hauteur de remplissage - Wholphin Par défaut - Wholphin Compact + Wolfskin Par défaut + Wolfskin Compact Images miniatures de la série Images miniatures de l\'épisode Le plus bas @@ -599,7 +599,7 @@ Suivant Séparer par types Préférer les logos pour les titres - Wholphin a été mis à jour vers la version %s + Wolfskin a été mis à jour vers la version %s Voir plus Parcourir les séries Parcourir les films diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index b056a7be..1eb5b58b 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -593,8 +593,8 @@ Ispuni Ispuni širinu Ispuni visinu - Wholphin zadani - Wholphin zbijeni + Wolfskin zadani + Wolfskin zbijeni Slike sličica serije Slike sličica epizoda Najniža @@ -653,7 +653,7 @@ Odaberi sve Odvojene vrste Preferiraj prikaz logotipa za naslove - Wholphin ažuriran na %s + Wolfskin ažuriran na %s Ukloni iz \"Nastavi gledanje\" Ukloni seriju iz \"Slijedi\" Prikaži serije uklonjene iz \"Slijedi\" diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index f3c0a00c..d6f20d4b 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -465,8 +465,8 @@ Foto Sertakan jenis Tampilkan gambar untuk jenis item - Wholphin Bawaan - Wholphin Ringkas + Wolfskin Bawaan + Wolfskin Ringkas Gambar Thumbnail Seri Gambar Thumbnail Episode Terendah @@ -561,7 +561,7 @@ Pisahkan jenis Buka artis Buka album - Wholphin diperbarui ke %s + Wolfskin diperbarui ke %s Hapus dari \"Lanjutkan menonton\" Hapus seri dari \"Berikutnya\" Lihat seri yang dihapus dari \"Berikutnya\" diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 7e347b2d..fb5f37ce 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -489,8 +489,8 @@ Riempi Riempi larghezza Riempi altezza - Wholphin predefinito - Wholphin Compatto + Wolfskin predefinito + Wolfskin Compatto Immagini miniatura serie Immagini miniatura episodio Minimo @@ -599,7 +599,7 @@ Continua Tipi separati Preferisci mostrare i loghi per i titoli - Wholphin aggiornato a %s + Wolfskin aggiornato a %s Rimuovi da Continua a guardare Rimuovi serie da Prossimo Visualizza serie rimosse da Prossimo diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index a4191206..fe4ce431 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -517,8 +517,8 @@ מתיחה לתצוגה מתיחה לרוחב מתיחה לגובה - ברירת המחדל של Wholphin - Wholphin קומפקטי + ברירת המחדל של Wolfskin + Wolfskin קומפקטי תמונות־ממוזערות של סדרה תמונות־ממוזערות של פרק כחול עז @@ -594,7 +594,7 @@ בחר הכול סוגים נפרדים העדף להציג לוגו על פני כותרת - Wholphin עודכן ל־%s + Wolfskin עודכן ל־%s מחק מהמשך צפייה מחק סדרה מ־\"הבא בתור\" הצג סדרות שנמחקו מ־\"הבא בתור\" diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 9e26efcc..c8066cec 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -483,8 +483,8 @@ Fyll Fyll bredde Fyll høyde - Wholphin Standard - Wholphin Kompakt + Wolfskin Standard + Wolfskin Kompakt Serieminiatyrbilder Episodeminiatyrbilder Lavest @@ -573,7 +573,7 @@ Velg alle Seperate typer Foretrekk å vise logoer for titler - Wholphin oppdatert til %s + Wolfskin oppdatert til %s Fjern fra fortsett å se Fjern serier fra neste Vis serier fjernet fra neste diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 2d6bd0c4..1e4891ba 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -480,8 +480,8 @@ Vullen Vulbreedte Vulhoogte - Wholphin standaard - Wholphin compact + Wolfskin standaard + Wolfskin compact Laag Middel Hoog @@ -603,7 +603,7 @@ Experimentele instellingen inschakelen? Experimentele instellingen - Wholphin is geüpdatet naar %s + Wolfskin is geüpdatet naar %s Laatst afgespeeld Direct afspelen met de ingebouwde ExoPlayer Ondertitels inbranden/transcoderen op de server diff --git a/app/src/main/res/values-nn/strings.xml b/app/src/main/res/values-nn/strings.xml index 55e08a8d..eb7a6fe7 100644 --- a/app/src/main/res/values-nn/strings.xml +++ b/app/src/main/res/values-nn/strings.xml @@ -478,8 +478,8 @@ Fyll Fyll breidde Fyll høgde - Wholphin-standard - Wholphin-kompakt + Wolfskin-standard + Wolfskin-kompakt Miniatyrbilete for seriar Miniatyrbilete for episodar Lågast diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index a208aeb6..83247c34 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -386,8 +386,8 @@ Wypełnij Pełna szerokość Pełna wysokość - Domyślny Wholphin - Kompaktowy Wholphin + Domyślny Wolfskin + Kompaktowy Wolfskin Miniatury seriali Zdjęcie odcinków Najniższa @@ -576,7 +576,7 @@ Wybierz wszystkie Oddzielne typy Wyświetlanie logo zamiast tytułu - Wholphin zaktualizowany do %s + Wolfskin zaktualizowany do %s Usuń z Kontynuuj oglądanie Usuń serial z Następnie Zobacz serię usuniętą z Następnie diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index e42abda3..af1e0d9f 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -498,8 +498,8 @@ Preencher Preencher largura Preencher altura - Padrão do Wholphin - Wholphin Compacto + Padrão do Wolfskin + Wolfskin Compacto Prévia das imagens das séries Prévias das imagens do episódio Mais baixo @@ -605,7 +605,7 @@ Selecionar todos Tipos separados Preferir a exibição de logos para títulos - Wholphin atualizado para %s + Wolfskin atualizado para %s Remover de continuar assistindo Remover série de a seguir Ver séries removidas de a seguir diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 02e92e10..d65ac309 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -507,8 +507,8 @@ Preencher Preencher largura Preencher altura - Padrão do Wholphin - Wholphin Compacto + Padrão do Wolfskin + Wolfskin Compacto Imagens em miniatura da série Imagens em miniatura do episódio Mínimo @@ -599,7 +599,7 @@ Continuar Separar por tipos Prefiro mostrar logótipos nos títulos - Wholphin foi atualizado para %s + Wolfskin foi atualizado para %s Remover de «Continuar a ver» Remover série do «Continuar a ver» Ver séries removidas do «Continuar a ver» diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 1c2321e9..f7cc6e4c 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -605,8 +605,8 @@ Растянуть По ширине По высоте - Wholphin по умолчанию - Wholphin компактный + Wolfskin по умолчанию + Wolfskin компактный Миниатюры сериалов Миниатюры эпизодов Самая низкая @@ -683,7 +683,7 @@ Продолжить Разделять по типам Показывать логотипы вместо текстовых названий - Wholphin обновлён до версии %s + Wolfskin обновлён до версии %s Убрать из «Продолжить просмотр» Убрать сериал из «Далее» Показать сериалы, убранные из «Далее» diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 95f777c1..bc78a1f8 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -526,8 +526,8 @@ Vyplniť Vyplniť na šírku Vyplniť na výšku - Wholphin predvolené - Wholphin kompaktné + Wolfskin predvolené + Wolfskin kompaktné Náhľadové obrázky seriálov Náhľadové obrázky epizód Náhľad @@ -662,7 +662,7 @@ Pokračovať Oddeliť typy Uprednostniť zobrazovanie log namiesto názvov - Wholphin bol aktualizovaný na verziu %s + Wolfskin bol aktualizovaný na verziu %s Odstrániť z Pokračovať v pozeraní Odstrániť seriál zo sekcie Nasleduje Zobraziť seriály odstránené zo sekcie Nasleduje diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 46ec0b68..5711dac1 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -600,7 +600,7 @@ Izberi vse Ločene vrste Prikazuj logotipe za naslove - Wholphin posodobljen na %s + Wolfskin posodobljen na %s Odstrani iz nadaljevanja gledanja Odstrani serijo iz nadaljevanja gledanja Ogled serije, odstranjene iz naslednjega gledanja diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 474d685a..3b71517a 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -424,8 +424,8 @@ Välj rader och bilder på startsidan Är du säker på att du vill radera detta objekt? Upptäck - Wholphin Kompakt - Wholphin Standard + Wolfskin Kompakt + Wolfskin Standard Visningsförinställningar Inbyggda förinställningar för att snabbt styla alla rader Avsnittsminiatyrer @@ -595,7 +595,7 @@ Vilka typer av objekt ska bilder visas för Låten har text Visa omslag till album - Wholphin har uppdaterats till %s + Wolfskin har uppdaterats till %s Senast visat Huvudkatalog Populäritet diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index c544add8..2ccccbae 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -465,8 +465,8 @@ ยืดเต็มจอ ยืดตามความกว้าง ยืดตามความสูง - Wholphin ค่าเริ่มต้น - Wholphin คอมแพค + Wolfskin ค่าเริ่มต้น + Wolfskin คอมแพค ภาพขนาดย่อของซีรี่ส์ ภาพขนาดย่อของตอน เบาสุด diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index b05abfd0..f591c3fb 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -480,8 +480,8 @@ Doldur Genişliği Doldur Yüksekliği Doldur - Wholphin Varsayılan - Wholphin Kompakt + Wolfskin Varsayılan + Wolfskin Kompakt Dizi Küçük Resimleri Bölüm Küçük Resimleri En Düşük @@ -589,7 +589,7 @@ Devam et Farklı türler Başlık yerine logo göster - Wholphin %s sürümüne güncellendi + Wolfskin %s sürümüne güncellendi Daha fazla göster Dizileri Keşfet Filmleri Keşfet diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 6b518809..0c0c9727 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -567,7 +567,7 @@ Заповнити Заповнити по ширині Заповнити по висоті - Wholphin за замовчуванням + Wolfskin за замовчуванням Мініатюри серіалів Мініатюри серій Найнижча @@ -655,7 +655,7 @@ Вибрати все Розділяти типи Надавати перевагу логотипам для назв - Wholphin оновлено до %s + Wolfskin оновлено до %s Видалити з «Продовжити перегляд» Видалити серіал з «Далі» Переглянути серіали, видалені з «Далі» @@ -686,5 +686,5 @@ Томати Сортування Розділити на окремі рядки - Wholphin компактний + Wolfskin компактний diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index e36dc507..07b57d8e 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -453,8 +453,8 @@ 填充 填充宽度 填充高度 - Wholphin 默认 - Wholphin 紧凑 + Wolfskin 默认 + Wolfskin 紧凑 剧集缩略图 分集缩略图 紫色 @@ -561,7 +561,7 @@ 继续 分离类型 优先显示标题图标 - Wholphin 已更新至 %s + Wolfskin 已更新至 %s 查看更多 发现电视节目 发现电影 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 622f5463..7c10daab 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -482,8 +482,8 @@ 優先使用 MPV 僅 HDR 使用 ExoPlayer 播放 我的最愛的 %s - Wholphin 預設樣式 - Wholphin 緊湊樣式 + Wolfskin 預設樣式 + Wolfskin 緊湊樣式 劇集縮圖樣式 單集縮圖樣式 海報 (2:3) @@ -561,7 +561,7 @@ 即時混播 依類型分開顯示 優先顯示圖像標題 - Wholphin 已更新至 %s + Wolfskin 已更新至 %s 查看更多 探索電視劇 探索電影 diff --git a/app/src/main/res/values/ic_banner_background.xml b/app/src/main/res/values/ic_banner_background.xml deleted file mode 100644 index e0e3446a..00000000 --- a/app/src/main/res/values/ic_banner_background.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - #000B25 - diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml index ffea1b18..933396c0 100644 --- a/app/src/main/res/values/ic_launcher_background.xml +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -1,4 +1,4 @@ - #101010 + #07070a diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dd87f6da..7b8a3578 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - Wholphin - Wholphin + Wolfskin + Wolfskin About Active Recordings @@ -587,8 +587,8 @@ Fill Fill width Fill height - Wholphin Default - Wholphin Compact + Wolfskin Default + Wolfskin Compact Series Thumb images Episode Thumbnail images @@ -620,6 +620,7 @@ @string/black @string/red @string/brown + @string/wolfskin_theme Ignore @@ -808,7 +809,7 @@ Select all Separate types Prefer showing logos for titles - Wholphin updated to %s + Wolfskin updated to %s Remove from continue watching Remove series from next up View series removed from next up diff --git a/app/src/main/res/values/wolfskin.xml b/app/src/main/res/values/wolfskin.xml new file mode 100644 index 00000000..2aca4d36 --- /dev/null +++ b/app/src/main/res/values/wolfskin.xml @@ -0,0 +1,6 @@ + + + Wolfskin + based on Wholphin by damontecres + https://github.com/damontecres/Wholphin + diff --git a/app/src/test/java/com/github/damontecres/wholphin/ui/WolfskinThemeColorsTest.kt b/app/src/test/java/com/github/damontecres/wholphin/ui/WolfskinThemeColorsTest.kt new file mode 100644 index 00000000..3ef4ad20 --- /dev/null +++ b/app/src/test/java/com/github/damontecres/wholphin/ui/WolfskinThemeColorsTest.kt @@ -0,0 +1,44 @@ +package com.github.damontecres.wholphin.ui + +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.luminance +import com.github.damontecres.wholphin.ui.theme.colors.WolfskinThemeColors +import org.junit.Assert.assertTrue +import org.junit.Test + +/** Normal and focused TV text must remain readable on the fork's dark palette. */ +class WolfskinThemeColorsTest { + @Test + fun darkPaletteHasReadableNormalAndFocusedText() { + val television = WolfskinThemeColors.darkScheme + val material = WolfskinThemeColors.darkSchemeMaterial + val textAndBackgrounds = + listOf( + television.onBackground to television.background, + television.onSurface to television.surface, + television.onSurfaceVariant to television.surfaceVariant, + television.onPrimary to television.primary, + television.onPrimaryContainer to television.primaryContainer, + television.onSecondary to television.secondary, + television.onSecondaryContainer to television.secondaryContainer, + television.onTertiary to television.tertiary, + television.onTertiaryContainer to television.tertiaryContainer, + material.onBackground to material.background, + material.onSurface to material.surface, + material.onPrimary to material.primary, + material.onPrimaryContainer to material.primaryContainer, + ) + textAndBackgrounds.forEach { (text, background) -> + assertReadable(text, background) + } + } + + private fun assertReadable(text: Color, background: Color) { + val textLuminance = text.luminance() + val backgroundLuminance = background.luminance() + val contrast = + (maxOf(textLuminance, backgroundLuminance) + .05f) / + (minOf(textLuminance, backgroundLuminance) + .05f) + assertTrue("Text contrast $contrast is below 4.5:1", contrast >= 4.5f) + } +}