From 472265093c5ba852317bc15bba0f49e88c8d28f6 Mon Sep 17 00:00:00 2001 From: Barnabas Balogh Date: Sat, 21 Feb 2026 10:21:35 +0100 Subject: [PATCH] feat: add :app-tv module as Android TV starting point Creates a new :app-tv application module that reuses shared business logic from :core:model, :core:data, :core:player, and :feature:shared, with its own TV-specific UI layer. - TvApplication + TvActivity with full Hilt + Navigation3 wiring - TvHomePage reusing HomePageViewModel from :feature:shared - Copied common UI components (PosterCard, WaitingScreen, etc.) - Copied login screen and form components - TV navigation module with Home + Login route entry builders - Material3 theme copied from mobile (ready for TV customization) - AndroidManifest with LAUNCHER + LEANBACK_LAUNCHER intent filters - Excludes :feature:download (downloads are mobile-only) --- app-tv/build.gradle.kts | 90 +++++ app-tv/proguard-rules.pro | 21 ++ app-tv/src/main/AndroidManifest.xml | 39 ++ .../hu/bbara/purefin/common/ui/PosterCard.kt | 120 ++++++ .../common/ui/PurefinComplexTextField.kt | 68 ++++ .../purefin/common/ui/PurefinPasswordField.kt | 76 ++++ .../purefin/common/ui/PurefinTextButton.kt | 26 ++ .../bbara/purefin/common/ui/WaitingScreen.kt | 199 ++++++++++ .../common/ui/components/MediaProgressBar.kt | 48 +++ .../common/ui/components/PurefinAsyncImage.kt | 38 ++ .../common/ui/components/PurefinIconButton.kt | 41 +++ .../common/ui/components/SearchField.kt | 48 +++ .../components/UnwatchedEpisodeIndicator.kt | 46 +++ .../ui/components/WatchStateIndicator.kt | 81 ++++ .../hu/bbara/purefin/login/ui/LoginScreen.kt | 214 +++++++++++ .../java/hu/bbara/purefin/tv/TvActivity.kt | 183 +++++++++ .../java/hu/bbara/purefin/tv/TvApplication.kt | 7 + .../hu/bbara/purefin/tv/home/TvHomePage.kt | 108 ++++++ .../bbara/purefin/tv/home/ui/TvHomeAvatar.kt | 41 +++ .../bbara/purefin/tv/home/ui/TvHomeContent.kt | 72 ++++ .../bbara/purefin/tv/home/ui/TvHomeDrawer.kt | 204 ++++++++++ .../purefin/tv/home/ui/TvHomeMockData.kt | 24 ++ .../bbara/purefin/tv/home/ui/TvHomeModels.kt | 16 + .../purefin/tv/home/ui/TvHomeSections.kt | 347 ++++++++++++++++++ .../bbara/purefin/tv/home/ui/TvHomeTopBar.kt | 67 ++++ .../tv/navigation/TvNavigationModule.kt | 26 ++ .../tv/navigation/TvRouteEntryBuilder.kt | 18 + .../java/hu/bbara/purefin/ui/theme/Color.kt | 218 +++++++++++ .../java/hu/bbara/purefin/ui/theme/Theme.kt | 275 ++++++++++++++ .../java/hu/bbara/purefin/ui/theme/Type.kt | 5 + .../res/drawable/purefin_logo_background.xml | 74 ++++ .../res/mipmap-anydpi-v26/purefin_logo.xml | 5 + .../mipmap-anydpi-v26/purefin_logo_round.xml | 5 + .../res/mipmap-anydpi/ic_launcher_round.xml | 6 + .../main/res/mipmap-hdpi/purefin_logo.webp | Bin 0 -> 3936 bytes .../mipmap-hdpi/purefin_logo_foreground.webp | Bin 0 -> 12094 bytes .../res/mipmap-hdpi/purefin_logo_round.webp | Bin 0 -> 5888 bytes .../main/res/mipmap-mdpi/purefin_logo.webp | Bin 0 -> 2218 bytes .../mipmap-mdpi/purefin_logo_foreground.webp | Bin 0 -> 5876 bytes .../res/mipmap-mdpi/purefin_logo_round.webp | Bin 0 -> 3526 bytes .../main/res/mipmap-xhdpi/purefin_logo.webp | Bin 0 -> 6208 bytes .../mipmap-xhdpi/purefin_logo_foreground.webp | Bin 0 -> 20342 bytes .../res/mipmap-xhdpi/purefin_logo_round.webp | Bin 0 -> 9066 bytes .../main/res/mipmap-xxhdpi/purefin_logo.webp | Bin 0 -> 11988 bytes .../purefin_logo_foreground.webp | Bin 0 -> 44628 bytes .../res/mipmap-xxhdpi/purefin_logo_round.webp | Bin 0 -> 16460 bytes .../main/res/mipmap-xxxhdpi/purefin_logo.webp | Bin 0 -> 19244 bytes .../purefin_logo_foreground.webp | Bin 0 -> 81822 bytes .../mipmap-xxxhdpi/purefin_logo_round.webp | Bin 0 -> 25956 bytes app-tv/src/main/res/values/strings.xml | 3 + app-tv/src/main/res/values/themes.xml | 5 + app-tv/src/main/res/xml/backup_rules.xml | 13 + .../main/res/xml/data_extraction_rules.xml | 19 + settings.gradle.kts | 1 + 54 files changed, 2897 insertions(+) create mode 100644 app-tv/build.gradle.kts create mode 100644 app-tv/proguard-rules.pro create mode 100644 app-tv/src/main/AndroidManifest.xml create mode 100644 app-tv/src/main/java/hu/bbara/purefin/common/ui/PosterCard.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/common/ui/PurefinComplexTextField.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/common/ui/PurefinPasswordField.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/common/ui/PurefinTextButton.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/common/ui/WaitingScreen.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/common/ui/components/MediaProgressBar.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/common/ui/components/PurefinAsyncImage.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/common/ui/components/PurefinIconButton.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/common/ui/components/SearchField.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/common/ui/components/UnwatchedEpisodeIndicator.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/common/ui/components/WatchStateIndicator.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/login/ui/LoginScreen.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/tv/TvActivity.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/tv/TvApplication.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/tv/home/TvHomePage.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeAvatar.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeContent.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeDrawer.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeMockData.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeModels.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeSections.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeTopBar.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/tv/navigation/TvNavigationModule.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/tv/navigation/TvRouteEntryBuilder.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/ui/theme/Color.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/ui/theme/Theme.kt create mode 100644 app-tv/src/main/java/hu/bbara/purefin/ui/theme/Type.kt create mode 100644 app-tv/src/main/res/drawable/purefin_logo_background.xml create mode 100644 app-tv/src/main/res/mipmap-anydpi-v26/purefin_logo.xml create mode 100644 app-tv/src/main/res/mipmap-anydpi-v26/purefin_logo_round.xml create mode 100644 app-tv/src/main/res/mipmap-anydpi/ic_launcher_round.xml create mode 100644 app-tv/src/main/res/mipmap-hdpi/purefin_logo.webp create mode 100644 app-tv/src/main/res/mipmap-hdpi/purefin_logo_foreground.webp create mode 100644 app-tv/src/main/res/mipmap-hdpi/purefin_logo_round.webp create mode 100644 app-tv/src/main/res/mipmap-mdpi/purefin_logo.webp create mode 100644 app-tv/src/main/res/mipmap-mdpi/purefin_logo_foreground.webp create mode 100644 app-tv/src/main/res/mipmap-mdpi/purefin_logo_round.webp create mode 100644 app-tv/src/main/res/mipmap-xhdpi/purefin_logo.webp create mode 100644 app-tv/src/main/res/mipmap-xhdpi/purefin_logo_foreground.webp create mode 100644 app-tv/src/main/res/mipmap-xhdpi/purefin_logo_round.webp create mode 100644 app-tv/src/main/res/mipmap-xxhdpi/purefin_logo.webp create mode 100644 app-tv/src/main/res/mipmap-xxhdpi/purefin_logo_foreground.webp create mode 100644 app-tv/src/main/res/mipmap-xxhdpi/purefin_logo_round.webp create mode 100644 app-tv/src/main/res/mipmap-xxxhdpi/purefin_logo.webp create mode 100644 app-tv/src/main/res/mipmap-xxxhdpi/purefin_logo_foreground.webp create mode 100644 app-tv/src/main/res/mipmap-xxxhdpi/purefin_logo_round.webp create mode 100644 app-tv/src/main/res/values/strings.xml create mode 100644 app-tv/src/main/res/values/themes.xml create mode 100644 app-tv/src/main/res/xml/backup_rules.xml create mode 100644 app-tv/src/main/res/xml/data_extraction_rules.xml diff --git a/app-tv/build.gradle.kts b/app-tv/build.gradle.kts new file mode 100644 index 0000000..d346d92 --- /dev/null +++ b/app-tv/build.gradle.kts @@ -0,0 +1,90 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.compose) + alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.hilt) + alias(libs.plugins.ksp) +} + +android { + namespace = "hu.bbara.purefin.tv" + compileSdk = 36 + + defaultConfig { + applicationId = "hu.bbara.purefin.tv" + minSdk = 29 + targetSdk = 36 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + buildFeatures { + compose = true + } +} + +kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_11) + } +} + +dependencies { + implementation(project(":core:model")) + implementation(project(":core:data")) + implementation(project(":core:player")) + implementation(project(":feature:shared")) + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.runtime.ktx) + implementation(libs.androidx.lifecycle.viewmodel.compose) + implementation(libs.androidx.lifecycle.viewmodel.navigation3) + implementation(libs.androidx.activity.compose) + implementation(platform(libs.androidx.compose.bom)) + implementation(libs.androidx.compose.ui) + implementation(libs.androidx.compose.ui.graphics) + implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.material.icons.extended) + implementation(libs.jellyfin.core) + implementation(libs.kotlinx.serialization.json) + implementation(libs.hilt) + implementation(libs.androidx.hilt.navigation.compose) + implementation(libs.datastore) + implementation(libs.okhttp) + implementation(libs.logging.interceptor) + implementation(libs.androidx.compose.foundation) + implementation(libs.coil.compose) + implementation(libs.coil.network.okhttp) + implementation(libs.medi3.exoplayer) + implementation(libs.medi3.ffmpeg.decoder) + implementation(libs.media3.datasource.okhttp) + implementation(libs.androidx.navigation3.runtime) + implementation(libs.androidx.navigation3.ui) + implementation(libs.androidx.room.ktx) + ksp(libs.androidx.room.compiler) + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.androidx.espresso.core) + androidTestImplementation(platform(libs.androidx.compose.bom)) + androidTestImplementation(libs.androidx.compose.ui.test.junit4) + debugImplementation(libs.androidx.compose.ui.tooling) + debugImplementation(libs.androidx.compose.ui.test.manifest) + ksp(libs.hilt.compiler) +} diff --git a/app-tv/proguard-rules.pro b/app-tv/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app-tv/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app-tv/src/main/AndroidManifest.xml b/app-tv/src/main/AndroidManifest.xml new file mode 100644 index 0000000..2887bae --- /dev/null +++ b/app-tv/src/main/AndroidManifest.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-tv/src/main/java/hu/bbara/purefin/common/ui/PosterCard.kt b/app-tv/src/main/java/hu/bbara/purefin/common/ui/PosterCard.kt new file mode 100644 index 0000000..851172d --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/common/ui/PosterCard.kt @@ -0,0 +1,120 @@ +package hu.bbara.purefin.common.ui + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import coil3.request.ImageRequest +import hu.bbara.purefin.common.ui.components.PurefinAsyncImage +import hu.bbara.purefin.common.ui.components.UnwatchedEpisodeIndicator +import hu.bbara.purefin.common.ui.components.WatchStateIndicator +import hu.bbara.purefin.feature.shared.home.PosterItem +import org.jellyfin.sdk.model.UUID +import org.jellyfin.sdk.model.api.BaseItemKind + +@Composable +fun PosterCard( + item: PosterItem, + modifier: Modifier = Modifier, + onMovieSelected: (UUID) -> Unit, + onSeriesSelected: (UUID) -> Unit, + onEpisodeSelected: (UUID, UUID, UUID) -> Unit, +) { + val scheme = MaterialTheme.colorScheme + val context = LocalContext.current + val density = LocalDensity.current + + val posterWidth = 144.dp + val posterHeight = posterWidth * 3 / 2 + + fun openItem(posterItem: PosterItem) { + when (posterItem.type) { + BaseItemKind.MOVIE -> onMovieSelected(posterItem.id) + BaseItemKind.SERIES -> onSeriesSelected(posterItem.id) + BaseItemKind.EPISODE -> { + val ep = posterItem.episode!! + onEpisodeSelected(ep.seriesId, ep.seasonId, ep.id) + } + else -> {} + } + } + + val imageRequest = ImageRequest.Builder(context) + .data(item.imageUrl) + .size(with(density) { posterWidth.roundToPx() }, with(density) { posterHeight.roundToPx() }) + .build() + Column( + modifier = Modifier + .width(posterWidth) + ) { + Box() { + PurefinAsyncImage( + model = imageRequest, + contentDescription = null, + modifier = Modifier + .aspectRatio(2f / 3f) + .clip(RoundedCornerShape(14.dp)) + .border(1.dp, scheme.outlineVariant.copy(alpha = 0.3f), RoundedCornerShape(14.dp)) + .background(scheme.surfaceVariant) + .clickable(onClick = { openItem(item) }), + contentScale = ContentScale.Crop + ) + when (item.type) { + BaseItemKind.MOVIE -> { + val m = item.movie!! + WatchStateIndicator( + size = 28, + modifier = Modifier.align(Alignment.TopEnd) + .padding(8.dp), + watched = m.watched, + started = (m.progress ?: 0.0) > 0 + ) + } + BaseItemKind.EPISODE -> { + val ep = item.episode!! + WatchStateIndicator( + size = 28, + modifier = Modifier.align(Alignment.TopEnd) + .padding(8.dp), + watched = ep.watched, + started = (ep.progress ?: 0.0) > 0 + ) + } + BaseItemKind.SERIES -> UnwatchedEpisodeIndicator( + size = 28, + modifier = Modifier.align(Alignment.TopEnd) + .padding(8.dp), + unwatchedCount = item.series!!.unwatchedEpisodeCount + ) + else -> {} + } + } + Text( + text = item.title, + color = scheme.onBackground, + fontSize = 13.sp, + fontWeight = FontWeight.Medium, + modifier = Modifier.padding(top = 8.dp, start = 4.dp, end = 4.dp, bottom = 8.dp), + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/common/ui/PurefinComplexTextField.kt b/app-tv/src/main/java/hu/bbara/purefin/common/ui/PurefinComplexTextField.kt new file mode 100644 index 0000000..33c97d0 --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/common/ui/PurefinComplexTextField.kt @@ -0,0 +1,68 @@ +package hu.bbara.purefin.common.ui + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Visibility +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.material3.TextFieldDefaults +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Composable +fun PurefinComplexTextField( + label: String, + value: String, + onValueChange: (String) -> Unit, + placeholder: String, + leadingIcon: ImageVector? = null, + trailingIcon: ImageVector? = null, + visualTransformation: VisualTransformation = VisualTransformation.None +) { + val scheme = MaterialTheme.colorScheme + + Column(modifier = Modifier.fillMaxWidth()) { + Text( + text = label, + color = scheme.onBackground, + fontWeight = FontWeight.Bold, + fontSize = 14.sp, + modifier = Modifier.padding(bottom = 8.dp) + ) + TextField( + value = value, + onValueChange = onValueChange, + modifier = Modifier + .fillMaxWidth() + .clip(RoundedCornerShape(12.dp)), + placeholder = { Text(placeholder, color = scheme.onSurfaceVariant) }, + leadingIcon = if (leadingIcon != null) { + { Icon(leadingIcon, contentDescription = null, tint = scheme.onSurfaceVariant) } + } else null, + trailingIcon = if (trailingIcon != null) { + { Icon(Icons.Default.Visibility, contentDescription = null, tint = scheme.onSurfaceVariant) } + } else null, + visualTransformation = visualTransformation, + colors = TextFieldDefaults.colors( + focusedContainerColor = scheme.surfaceVariant, + unfocusedContainerColor = scheme.surfaceVariant, + focusedIndicatorColor = Color.Transparent, + unfocusedIndicatorColor = Color.Transparent, + cursorColor = scheme.primary, + focusedTextColor = scheme.onSurface, + unfocusedTextColor = scheme.onSurface + )) + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/common/ui/PurefinPasswordField.kt b/app-tv/src/main/java/hu/bbara/purefin/common/ui/PurefinPasswordField.kt new file mode 100644 index 0000000..2b3a1cf --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/common/ui/PurefinPasswordField.kt @@ -0,0 +1,76 @@ +package hu.bbara.purefin.common.ui + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Visibility +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.material3.TextFieldDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Composable +fun PurefinPasswordField( + label: String, + value: String, + onValueChange: (String) -> Unit, + placeholder: String, + leadingIcon: ImageVector, +) { + val scheme = MaterialTheme.colorScheme + + val showField = remember { mutableStateOf(false) } + + Column(modifier = Modifier.fillMaxWidth()) { + Text( + text = label, + color = scheme.onBackground, + fontWeight = FontWeight.Bold, + fontSize = 14.sp, + modifier = Modifier.padding(bottom = 8.dp) + ) + TextField( + value = value, + onValueChange = onValueChange, + modifier = Modifier + .fillMaxWidth() + .clip(RoundedCornerShape(12.dp)), + placeholder = { Text(placeholder, color = scheme.onSurfaceVariant) }, + leadingIcon = { Icon(leadingIcon, contentDescription = null, tint = scheme.onSurfaceVariant) }, + trailingIcon = + { + IconButton( + onClick = { showField.value = !showField.value }, + ) { + Icon(Icons.Default.Visibility, contentDescription = null, tint = scheme.onSurfaceVariant) + } + }, + visualTransformation = if (showField.value) VisualTransformation.None else PasswordVisualTransformation(), + colors = TextFieldDefaults.colors( + focusedContainerColor = scheme.surfaceVariant, + unfocusedContainerColor = scheme.surfaceVariant, + focusedIndicatorColor = Color.Transparent, + unfocusedIndicatorColor = Color.Transparent, + cursorColor = scheme.primary, + focusedTextColor = scheme.onSurface, + unfocusedTextColor = scheme.onSurface + ) + ) + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/common/ui/PurefinTextButton.kt b/app-tv/src/main/java/hu/bbara/purefin/common/ui/PurefinTextButton.kt new file mode 100644 index 0000000..0e54d08 --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/common/ui/PurefinTextButton.kt @@ -0,0 +1,26 @@ +package hu.bbara.purefin.common.ui + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier + +@Composable +fun PurefinTextButton( + onClick: () -> Unit, + modifier: Modifier = Modifier, + enabled: Boolean = true, + content: @Composable RowScope.() -> Unit +) { + Button( + onClick = onClick, + modifier = modifier, + enabled = enabled, + colors = ButtonDefaults.buttonColors( + containerColor = MaterialTheme.colorScheme.primary + ), + content = content + ) +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/common/ui/WaitingScreen.kt b/app-tv/src/main/java/hu/bbara/purefin/common/ui/WaitingScreen.kt new file mode 100644 index 0000000..6ba67bf --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/common/ui/WaitingScreen.kt @@ -0,0 +1,199 @@ +package hu.bbara.purefin.common.ui + +import androidx.compose.animation.core.FastOutSlowInEasing +import androidx.compose.animation.core.RepeatMode +import androidx.compose.animation.core.animateFloat +import androidx.compose.animation.core.infiniteRepeatable +import androidx.compose.animation.core.rememberInfiniteTransition +import androidx.compose.animation.core.tween +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Movie +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Composable +fun PurefinWaitingScreen( + modifier: Modifier = Modifier +) { + val scheme = MaterialTheme.colorScheme + val accentColor = scheme.primary + val backgroundColor = scheme.background + val surfaceColor = scheme.surface + val textPrimary = scheme.onSurface + val textSecondary = scheme.onSurfaceVariant + + val transition = rememberInfiniteTransition(label = "waiting-pulse") + val pulseScale = transition.animateFloat( + initialValue = 0.9f, + targetValue = 1.15f, + animationSpec = infiniteRepeatable( + animation = tween(durationMillis = 1400, easing = FastOutSlowInEasing), + repeatMode = RepeatMode.Reverse + ), + label = "pulse-scale" + ) + val pulseAlpha = transition.animateFloat( + initialValue = 0.2f, + targetValue = 0.6f, + animationSpec = infiniteRepeatable( + animation = tween(durationMillis = 1400, easing = FastOutSlowInEasing), + repeatMode = RepeatMode.Reverse + ), + label = "pulse-alpha" + ) + + val gradient = Brush.radialGradient( + colors = listOf( + accentColor.copy(alpha = 0.28f), + backgroundColor + ) + ) + + Box( + modifier = modifier + .fillMaxSize() + .background(gradient) + .padding(24.dp), + contentAlignment = Alignment.Center + ) { + Column( + modifier = Modifier + .clip(RoundedCornerShape(28.dp)) + .background(surfaceColor.copy(alpha = 0.92f)) + .padding(horizontal = 28.dp, vertical = 32.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Box(contentAlignment = Alignment.Center) { + Box( + modifier = Modifier + .size(86.dp) + .graphicsLayer { + scaleX = pulseScale.value + scaleY = pulseScale.value + } + .alpha(pulseAlpha.value) + .border( + width = 2.dp, + color = accentColor.copy(alpha = 0.6f), + shape = RoundedCornerShape(26.dp) + ) + ) + Box( + modifier = Modifier + .size(72.dp) + .clip(RoundedCornerShape(22.dp)) + .background(accentColor), + contentAlignment = Alignment.Center + ) { + Icon( + imageVector = Icons.Outlined.Movie, + contentDescription = null, + tint = scheme.onPrimary, + modifier = Modifier.size(40.dp) + ) + } + } + + Spacer(modifier = Modifier.height(20.dp)) + + Text( + text = "Just a moment", + color = textPrimary, + fontSize = 20.sp, + fontWeight = FontWeight.Bold + ) + Text( + text = "I am doing all I can...", + color = textSecondary, + fontSize = 14.sp + ) + + Spacer(modifier = Modifier.height(24.dp)) + + WaitingDots(accentColor = accentColor) + } + } +} + +@Composable +private fun WaitingDots(accentColor: Color, modifier: Modifier = Modifier) { + val transition = rememberInfiniteTransition(label = "waiting-dots") + val firstAlpha = transition.animateFloat( + initialValue = 0.3f, + targetValue = 1f, + animationSpec = infiniteRepeatable( + animation = tween(durationMillis = 700, delayMillis = 0, easing = FastOutSlowInEasing), + repeatMode = RepeatMode.Reverse + ), + label = "dot-1" + ) + val secondAlpha = transition.animateFloat( + initialValue = 0.3f, + targetValue = 1f, + animationSpec = infiniteRepeatable( + animation = tween(durationMillis = 700, delayMillis = 140, easing = FastOutSlowInEasing), + repeatMode = RepeatMode.Reverse + ), + label = "dot-2" + ) + val thirdAlpha = transition.animateFloat( + initialValue = 0.3f, + targetValue = 1f, + animationSpec = infiniteRepeatable( + animation = tween(durationMillis = 700, delayMillis = 280, easing = FastOutSlowInEasing), + repeatMode = RepeatMode.Reverse + ), + label = "dot-3" + ) + + Row( + modifier = modifier, + horizontalArrangement = Arrangement.spacedBy(10.dp), + verticalAlignment = Alignment.CenterVertically + ) { + WaitingDot(alpha = firstAlpha.value, color = accentColor) + WaitingDot(alpha = secondAlpha.value, color = accentColor) + WaitingDot(alpha = thirdAlpha.value, color = accentColor) + } +} + +@Composable +private fun WaitingDot(alpha: Float, color: Color) { + Box( + modifier = Modifier + .size(10.dp) + .graphicsLayer { + val scale = 0.7f + (alpha * 0.3f) + scaleX = scale + scaleY = scale + } + .alpha(alpha) + .background(color, CircleShape) + ) +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/MediaProgressBar.kt b/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/MediaProgressBar.kt new file mode 100644 index 0000000..2d17543 --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/MediaProgressBar.kt @@ -0,0 +1,48 @@ +package hu.bbara.purefin.common.ui.components + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp + +/** + * A progress bar component for displaying media playback progress. + * + * @param progress The progress value between 0f and 1f, where 0f is no progress and 1f is complete. + * @param foregroundColor The color of the progress indicator. + * @param backgroundColor The color of the background/unfilled portion of the progress bar. + * @param modifier The modifier to be applied to the Box. Modifier should contain the Alignment. + */ +@Composable +fun MediaProgressBar( + progress: Float, + foregroundColor: Color = MaterialTheme.colorScheme.onSurface, + backgroundColor: Color = MaterialTheme.colorScheme.primary, + modifier: Modifier +) { + if (progress == 0f) return + Box( + modifier = modifier + .padding(bottom = 8.dp, start = 8.dp, end = 8.dp) + .clip(RoundedCornerShape(24.dp)) + .fillMaxWidth() + .height(4.dp) + .background(backgroundColor.copy(alpha = 0.2f)) + ) { + Box( + modifier = Modifier + .fillMaxHeight() + .fillMaxWidth(progress) + .background(foregroundColor) + ) + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/PurefinAsyncImage.kt b/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/PurefinAsyncImage.kt new file mode 100644 index 0000000..9d510a9 --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/PurefinAsyncImage.kt @@ -0,0 +1,38 @@ +package hu.bbara.purefin.common.ui.components + +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.painter.ColorPainter +import androidx.compose.ui.layout.ContentScale +import coil3.compose.AsyncImage + +/** + * Async image that falls back to theme-synced color blocks so loading/error states + * stay aligned with PurefinTheme's colorScheme. + */ +@Composable +fun PurefinAsyncImage( + model: Any?, + contentDescription: String?, + modifier: Modifier = Modifier, + contentScale: ContentScale = ContentScale.Crop +) { + val placeholderPainter = ColorPainter(MaterialTheme.colorScheme.surfaceVariant) + + // Convert empty string to null to properly trigger fallback + val effectiveModel = when { + model is String && model.isEmpty() -> null + else -> model + } + + AsyncImage( + model = effectiveModel, + contentDescription = contentDescription, + modifier = modifier, + contentScale = contentScale, + placeholder = placeholderPainter, + error = placeholderPainter, + fallback = placeholderPainter + ) +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/PurefinIconButton.kt b/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/PurefinIconButton.kt new file mode 100644 index 0000000..9a5dc9c --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/PurefinIconButton.kt @@ -0,0 +1,41 @@ +package hu.bbara.purefin.common.ui.components + +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.unit.dp + +@Composable +fun PurefinIconButton( + icon: ImageVector, + contentDescription: String, + onClick: () -> Unit, + modifier: Modifier = Modifier, + size: Int = 52 +) { + val scheme = MaterialTheme.colorScheme + + Box( + modifier = modifier + .size(size.dp) + .clip(CircleShape) + .background(scheme.secondary) + .clickable { onClick() }, + contentAlignment = Alignment.Center + ) { + Icon( + imageVector = icon, + contentDescription = contentDescription, + tint = scheme.onSecondary + ) + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/SearchField.kt b/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/SearchField.kt new file mode 100644 index 0000000..f606d75 --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/SearchField.kt @@ -0,0 +1,48 @@ +package hu.bbara.purefin.common.ui.components + +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Search +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.material3.TextFieldDefaults +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp + +@Composable +fun SearchField( + value: String, + onValueChange: (String) -> Unit, + placeholder: String, + backgroundColor: Color, + textColor: Color, + cursorColor: Color, + modifier: Modifier = Modifier, +) { + val scheme = MaterialTheme.colorScheme + + TextField( + value = value, + onValueChange = onValueChange, + modifier = modifier + .fillMaxWidth() + .clip(RoundedCornerShape(32.dp)), + placeholder = { Text(placeholder, color = scheme.onSurfaceVariant) }, + leadingIcon = + { Icon(imageVector = Icons.Outlined.Search, contentDescription = null, tint = scheme.onSurfaceVariant) }, + colors = TextFieldDefaults.colors( + focusedContainerColor = backgroundColor, + unfocusedContainerColor = backgroundColor, + focusedIndicatorColor = Color.Transparent, + unfocusedIndicatorColor = Color.Transparent, + cursorColor = cursorColor, + focusedTextColor = textColor, + unfocusedTextColor = textColor, + )) +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/UnwatchedEpisodeIndicator.kt b/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/UnwatchedEpisodeIndicator.kt new file mode 100644 index 0000000..08783fd --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/UnwatchedEpisodeIndicator.kt @@ -0,0 +1,46 @@ +package hu.bbara.purefin.common.ui.components + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Composable +fun UnwatchedEpisodeIndicator( + unwatchedCount: Int, + foregroundColor: Color = MaterialTheme.colorScheme.onPrimary, + backgroundColor: Color = MaterialTheme.colorScheme.primary, + size: Int = 24, + modifier: Modifier = Modifier +) { + if (unwatchedCount == 0) { + return + } + + Box( + contentAlignment = Alignment.Center, + modifier = modifier + .border(1.dp, backgroundColor.copy(alpha = 0.8f), CircleShape) + .background(backgroundColor.copy(alpha = 0.8f), CircleShape) + .size(size.dp) + .clip(CircleShape) + ) { + Text( + text = if (unwatchedCount > 9) "9+" else unwatchedCount.toString(), + color = foregroundColor.copy(alpha = 0.8f), + fontWeight = FontWeight.W900, + fontSize = 15.sp + ) + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/WatchStateIndicator.kt b/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/WatchStateIndicator.kt new file mode 100644 index 0000000..20f696a --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/common/ui/components/WatchStateIndicator.kt @@ -0,0 +1,81 @@ +package hu.bbara.purefin.common.ui.components + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Check +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Composable +fun WatchStateIndicator( + watched: Boolean, + started: Boolean, + watchedColor: Color = MaterialTheme.colorScheme.onPrimary, + watchedBackgroundColor: Color = MaterialTheme.colorScheme.primary, + startedColor: Color = MaterialTheme.colorScheme.onSecondary, + startedBackgroundColor: Color = MaterialTheme.colorScheme.secondary, + size: Int = 24, + modifier: Modifier = Modifier +) { + + if (watched.not() && started.not()) { + return + } + + val foregroundColor = if (watched) watchedColor.copy(alpha = 0.8f) else startedColor.copy(alpha = 0.3f) + val backgroundColor = if (watched) watchedBackgroundColor.copy(alpha = 0.8f) else startedBackgroundColor.copy(alpha = 0.3f) + val borderColor = if (watched) watchedBackgroundColor.copy(alpha = 0.8f) else startedBackgroundColor.copy(alpha = 0.8f) + + + Box( + contentAlignment = Alignment.Center, + modifier = modifier + .border(1.dp, borderColor, CircleShape) + .background(backgroundColor, CircleShape) + .size(size.dp) + .clip(CircleShape) + ) { + if (watched) { + Icon( + imageVector = Icons.Outlined.Check, + contentDescription = "Check", + tint = foregroundColor, + modifier = Modifier + .padding(1.dp) + .matchParentSize() + ) + } + } +} + +@Preview +@Composable +private fun WatchStateIndicatorPreview() { + Column() { + WatchStateIndicator( + watched = false, + started = false + ) + WatchStateIndicator( + watched = true, + started = false + ) + WatchStateIndicator( + watched = false, + started = true + ) + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/login/ui/LoginScreen.kt b/app-tv/src/main/java/hu/bbara/purefin/login/ui/LoginScreen.kt new file mode 100644 index 0000000..45c784a --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/login/ui/LoginScreen.kt @@ -0,0 +1,214 @@ +package hu.bbara.purefin.login.ui + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Lock +import androidx.compose.material.icons.filled.Movie +import androidx.compose.material.icons.filled.Person +import androidx.compose.material.icons.filled.Search +import androidx.compose.material.icons.filled.Storage +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.hilt.navigation.compose.hiltViewModel +import hu.bbara.purefin.common.ui.PurefinComplexTextField +import hu.bbara.purefin.common.ui.PurefinPasswordField +import hu.bbara.purefin.common.ui.PurefinTextButton +import hu.bbara.purefin.common.ui.PurefinWaitingScreen +import hu.bbara.purefin.feature.shared.login.LoginViewModel +import kotlinx.coroutines.launch + +@Composable +fun LoginScreen( + viewModel: LoginViewModel = hiltViewModel(), + modifier: Modifier = Modifier +) { + val scheme = MaterialTheme.colorScheme + + // Observe ViewModel state + val serverUrl by viewModel.url.collectAsState() + val username by viewModel.username.collectAsState() + val password by viewModel.password.collectAsState() + val errorMessage by viewModel.errorMessage.collectAsState() + var isLoggingIn by remember { mutableStateOf(false) } + + val coroutineScope = rememberCoroutineScope() + + if (isLoggingIn) { + PurefinWaitingScreen(modifier = modifier) + } else { + Column( + modifier = modifier + .fillMaxSize() + .background(scheme.background) + .padding(24.dp) + .verticalScroll(rememberScrollState()), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Spacer(modifier = Modifier.weight(0.5f)) + + // Logo Section + Box( + modifier = Modifier + .size(100.dp) + .background(scheme.primary, RoundedCornerShape(24.dp)), + contentAlignment = Alignment.Center + ) { + Icon( + imageVector = Icons.Default.Movie, + contentDescription = "Logo", + tint = scheme.onPrimary, + modifier = Modifier.size(60.dp) + ) + } + + Text( + text = "Jellyfin", + color = scheme.onBackground, + fontSize = 32.sp, + fontWeight = FontWeight.Bold, + modifier = Modifier.padding(top = 16.dp) + ) + Text( + text = "PERSONAL MEDIA SYSTEM", + color = scheme.onSurfaceVariant, + fontSize = 12.sp, + letterSpacing = 2.sp + ) + + Spacer(modifier = Modifier.height(48.dp)) + + // Form Section + Text( + text = "Connect to Server", + color = scheme.onBackground, + fontSize = 22.sp, + fontWeight = FontWeight.Bold, + modifier = Modifier.align(Alignment.Start) + ) + Text( + text = "Enter your details to access your library", + color = scheme.onSurfaceVariant, + fontSize = 14.sp, + modifier = Modifier + .align(Alignment.Start) + .padding(bottom = 24.dp) + ) + + if (errorMessage != null) { + Text( + text = errorMessage!!, + color = scheme.error, + fontSize = 14.sp, + modifier = Modifier + .fillMaxWidth() + .background( + scheme.errorContainer, + RoundedCornerShape(8.dp) + ) + .padding(12.dp) + ) + Spacer(modifier = Modifier.height(16.dp)) + } + + PurefinComplexTextField( + label = "Server URL", + value = serverUrl, + onValueChange = { + viewModel.clearError() + viewModel.setUrl(it) + }, + placeholder = "http://192.168.1.100:8096", + leadingIcon = Icons.Default.Storage + ) + + Spacer(modifier = Modifier.height(16.dp)) + + PurefinComplexTextField( + label = "Username", + value = username, + onValueChange = { + viewModel.clearError() + viewModel.setUsername(it) + }, + placeholder = "Enter your username", + leadingIcon = Icons.Default.Person + ) + + Spacer(modifier = Modifier.height(16.dp)) + + PurefinPasswordField( + label = "Password", + value = password, + onValueChange = { + viewModel.clearError() + viewModel.setPassword(it) + }, + placeholder = "••••••••", + leadingIcon = Icons.Default.Lock, + ) + + Spacer(modifier = Modifier.height(32.dp)) + + PurefinTextButton( + content = { Text("Connect") }, + onClick = { + coroutineScope.launch { + isLoggingIn = true + try { + viewModel.login() + } finally { + isLoggingIn = false + } + } + } + ) + + Spacer(modifier = Modifier.weight(0.5f)) + + // Footer Links + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + TextButton(onClick = {}) { + Row(verticalAlignment = Alignment.CenterVertically) { + Icon(Icons.Default.Search, contentDescription = null, tint = scheme.onSurfaceVariant, modifier = Modifier.size(18.dp)) + Text(" Discover Servers", color = scheme.onSurfaceVariant) + } + } + TextButton(onClick = {}) { + Text("Need Help?", color = scheme.onSurfaceVariant) + } + } + + Spacer(modifier = Modifier.height(16.dp)) + } + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/tv/TvActivity.kt b/app-tv/src/main/java/hu/bbara/purefin/tv/TvActivity.kt new file mode 100644 index 0000000..840258a --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/tv/TvActivity.kt @@ -0,0 +1,183 @@ +package hu.bbara.purefin.tv + +import android.content.pm.ApplicationInfo +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.viewmodel.navigation3.rememberViewModelStoreNavEntryDecorator +import androidx.navigation3.runtime.EntryProviderScope +import androidx.navigation3.runtime.NavBackStack +import androidx.navigation3.runtime.entryProvider +import androidx.navigation3.runtime.rememberNavBackStack +import androidx.navigation3.runtime.rememberSaveableStateHolderNavEntryDecorator +import androidx.navigation3.ui.NavDisplay +import coil3.ImageLoader +import coil3.SingletonImageLoader +import coil3.disk.DiskCache +import coil3.memory.MemoryCache +import coil3.network.okhttp.OkHttpNetworkFetcherFactory +import coil3.request.crossfade +import coil3.util.DebugLogger +import dagger.hilt.android.AndroidEntryPoint +import hu.bbara.purefin.common.ui.PurefinWaitingScreen +import hu.bbara.purefin.core.data.client.JellyfinApiClient +import hu.bbara.purefin.core.data.client.JellyfinAuthInterceptor +import hu.bbara.purefin.core.data.navigation.LocalNavigationManager +import hu.bbara.purefin.core.data.navigation.NavigationCommand +import hu.bbara.purefin.core.data.navigation.NavigationManager +import hu.bbara.purefin.core.data.navigation.Route +import hu.bbara.purefin.core.data.session.UserSessionRepository +import hu.bbara.purefin.login.ui.LoginScreen +import hu.bbara.purefin.ui.theme.AppTheme +import kotlinx.coroutines.launch +import okhttp3.OkHttpClient +import okio.Path.Companion.toPath +import javax.inject.Inject + +@AndroidEntryPoint +class TvActivity : ComponentActivity() { + + @Inject + lateinit var entryBuilders: Set<@JvmSuppressWildcards EntryProviderScope.() -> Unit> + + @Inject + lateinit var userSessionRepository: UserSessionRepository + + @Inject + lateinit var navigationManager: NavigationManager + + @Inject + lateinit var jellyfinApiClient: JellyfinApiClient + + @Inject + lateinit var authInterceptor: JellyfinAuthInterceptor + + private val imageOkHttpClient: OkHttpClient by lazy { + OkHttpClient.Builder() + .addNetworkInterceptor(authInterceptor) + .build() + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + lifecycleScope.launch { init() } + configureImageLoader() + enableEdgeToEdge() + setContent { + AppTheme { + MainApp( + userSessionRepository = userSessionRepository, + entryBuilders = entryBuilders, + navigationManager = navigationManager + ) + } + } + } + + private suspend fun init() { + jellyfinApiClient.updateApiClient() + } + + private fun configureImageLoader() { + SingletonImageLoader.setSafe { context -> + val builder = ImageLoader.Builder(context) + .components { + add( + OkHttpNetworkFetcherFactory( + callFactory = { imageOkHttpClient } + ) + ) + } + .memoryCache { + MemoryCache.Builder() + .maxSizePercent(context, 0.20) + .build() + } + .diskCache { + DiskCache.Builder() + .directory(context.cacheDir.resolve("image_cache").absolutePath.toPath()) + .maxSizeBytes(30_000_000) + .build() + } + .crossfade(true) + + if (isDebuggable()) { + builder.logger(DebugLogger()) + } + + builder.build() + } + } + + private fun isDebuggable(): Boolean = + (applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE) != 0 + + @Composable + fun MainApp( + userSessionRepository: UserSessionRepository, + entryBuilders: Set<@JvmSuppressWildcards EntryProviderScope.() -> Unit>, + navigationManager: NavigationManager + ) { + var sessionLoaded by remember { mutableStateOf(false) } + val isLoggedIn by userSessionRepository.isLoggedIn.collectAsState(initial = false) + + LaunchedEffect(Unit) { + userSessionRepository.isLoggedIn.collect { + sessionLoaded = true + } + } + + if (!sessionLoaded) { + PurefinWaitingScreen(modifier = Modifier.fillMaxSize()) + return + } + + if (isLoggedIn) { + @Suppress("UNCHECKED_CAST") + val backStack = rememberNavBackStack(Route.Home) as NavBackStack + val appEntryProvider = entryProvider { + entryBuilders.forEach { builder -> builder() } + } + + LaunchedEffect(navigationManager, backStack) { + navigationManager.commands.collect { command -> + when (command) { + NavigationCommand.Pop -> if (backStack.size > 1) backStack.removeLastOrNull() + is NavigationCommand.Navigate -> backStack.add(command.route) + is NavigationCommand.ReplaceAll -> { + backStack.clear() + backStack.add(command.route) + } + } + } + } + + CompositionLocalProvider(LocalNavigationManager provides navigationManager) { + NavDisplay( + backStack = backStack, + onBack = { navigationManager.pop() }, + modifier = Modifier.fillMaxSize(), + entryDecorators = listOf( + rememberSaveableStateHolderNavEntryDecorator(), + rememberViewModelStoreNavEntryDecorator(), + ), + entryProvider = appEntryProvider + ) + } + } else { + LoginScreen() + } + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/tv/TvApplication.kt b/app-tv/src/main/java/hu/bbara/purefin/tv/TvApplication.kt new file mode 100644 index 0000000..2d94057 --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/tv/TvApplication.kt @@ -0,0 +1,7 @@ +package hu.bbara.purefin.tv + +import android.app.Application +import dagger.hilt.android.HiltAndroidApp + +@HiltAndroidApp +class TvApplication : Application() diff --git a/app-tv/src/main/java/hu/bbara/purefin/tv/home/TvHomePage.kt b/app-tv/src/main/java/hu/bbara/purefin/tv/home/TvHomePage.kt new file mode 100644 index 0000000..95a9ab1 --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/tv/home/TvHomePage.kt @@ -0,0 +1,108 @@ +package hu.bbara.purefin.tv.home + +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Collections +import androidx.compose.material.icons.outlined.Movie +import androidx.compose.material.icons.outlined.Tv +import androidx.compose.material3.DrawerValue +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ModalDrawerSheet +import androidx.compose.material3.ModalNavigationDrawer +import androidx.compose.material3.Scaffold +import androidx.compose.material3.rememberDrawerState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.LifecycleResumeEffect +import hu.bbara.purefin.feature.shared.home.HomePageViewModel +import hu.bbara.purefin.tv.home.ui.TvHomeContent +import hu.bbara.purefin.tv.home.ui.TvHomeDrawerContent +import hu.bbara.purefin.tv.home.ui.TvHomeMockData +import hu.bbara.purefin.tv.home.ui.TvHomeNavItem +import hu.bbara.purefin.tv.home.ui.TvHomeTopBar +import kotlinx.coroutines.launch +import org.jellyfin.sdk.model.api.CollectionType + +@Composable +fun TvHomePage( + viewModel: HomePageViewModel = hiltViewModel(), + modifier: Modifier = Modifier +) { + val drawerState = rememberDrawerState(DrawerValue.Closed) + val coroutineScope = rememberCoroutineScope() + + val libraries = viewModel.libraries.collectAsState().value + val isOfflineMode = viewModel.isOfflineMode.collectAsState().value + val libraryNavItems = libraries.map { + TvHomeNavItem( + id = it.id, + label = it.name, + icon = when (it.type) { + CollectionType.MOVIES -> Icons.Outlined.Movie + CollectionType.TVSHOWS -> Icons.Outlined.Tv + else -> Icons.Outlined.Collections + }, + ) + } + val continueWatching = viewModel.continueWatching.collectAsState() + val nextUp = viewModel.nextUp.collectAsState() + val latestLibraryContent = viewModel.latestLibraryContent.collectAsState() + + LifecycleResumeEffect(Unit) { + viewModel.onResumed() + onPauseOrDispose { } + } + + ModalNavigationDrawer( + drawerState = drawerState, + drawerContent = { + ModalDrawerSheet( + modifier = Modifier + .width(280.dp) + .fillMaxSize(), + drawerContainerColor = MaterialTheme.colorScheme.surface, + drawerContentColor = MaterialTheme.colorScheme.onBackground + ) { + TvHomeDrawerContent( + title = "Jellyfin", + subtitle = "Library Dashboard", + primaryNavItems = libraryNavItems, + secondaryNavItems = TvHomeMockData.secondaryNavItems, + user = TvHomeMockData.user, + onLibrarySelected = { item -> viewModel.onLibrarySelected(item.id, item.label) }, + onLogout = viewModel::logout + ) + } + } + ) { + Scaffold( + modifier = modifier.fillMaxSize(), + containerColor = MaterialTheme.colorScheme.background, + contentColor = MaterialTheme.colorScheme.onBackground, + topBar = { + TvHomeTopBar( + onMenuClick = { coroutineScope.launch { drawerState.open() } }, + isOfflineMode = isOfflineMode, + onToggleOfflineMode = viewModel::toggleOfflineMode + ) + } + ) { innerPadding -> + TvHomeContent( + libraries = libraries, + libraryContent = latestLibraryContent.value, + continueWatching = continueWatching.value, + nextUp = nextUp.value, + onMovieSelected = viewModel::onMovieSelected, + onSeriesSelected = viewModel::onSeriesSelected, + onEpisodeSelected = viewModel::onEpisodeSelected, + modifier = Modifier.padding(innerPadding) + ) + } + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeAvatar.kt b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeAvatar.kt new file mode 100644 index 0000000..6a49b9a --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeAvatar.kt @@ -0,0 +1,41 @@ +package hu.bbara.purefin.tv.home.ui + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.Icon +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.unit.Dp + +@Composable +fun TvHomeAvatar( + size: Dp, + borderWidth: Dp, + borderColor: Color, + backgroundColor: Color, + icon: ImageVector, + iconTint: Color, + modifier: Modifier = Modifier +) { + Box( + modifier = modifier + .size(size) + .clip(CircleShape) + .border(borderWidth, borderColor, CircleShape) + .background(backgroundColor), + contentAlignment = Alignment.Center + ) { + Icon( + imageVector = icon, + contentDescription = null, + tint = iconTint + ) + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeContent.kt b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeContent.kt new file mode 100644 index 0000000..33c608e --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeContent.kt @@ -0,0 +1,72 @@ +package hu.bbara.purefin.tv.home.ui + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import hu.bbara.purefin.feature.shared.home.ContinueWatchingItem +import hu.bbara.purefin.feature.shared.home.LibraryItem +import hu.bbara.purefin.feature.shared.home.NextUpItem +import hu.bbara.purefin.feature.shared.home.PosterItem +import org.jellyfin.sdk.model.UUID + +@Composable +fun TvHomeContent( + libraries: List, + libraryContent: Map>, + continueWatching: List, + nextUp: List, + onMovieSelected: (UUID) -> Unit, + onSeriesSelected: (UUID) -> Unit, + onEpisodeSelected: (UUID, UUID, UUID) -> Unit, + modifier: Modifier = Modifier +) { + LazyColumn( + modifier = modifier + .fillMaxSize() + .background(MaterialTheme.colorScheme.background) + ) { + item { + Spacer(modifier = Modifier.height(8.dp)) + } + item { + TvContinueWatchingSection( + items = continueWatching, + onMovieSelected = onMovieSelected, + onEpisodeSelected = onEpisodeSelected + ) + } + item { + Spacer(modifier = Modifier.height(16.dp)) + } + item { + TvNextUpSection( + items = nextUp, + onEpisodeSelected = onEpisodeSelected + ) + } + item { + Spacer(modifier = Modifier.height(16.dp)) + } + items( + items = libraries.filter { libraryContent[it.id]?.isEmpty() != true }, + key = { it.id } + ) { item -> + TvLibraryPosterSection( + title = item.name, + items = libraryContent[item.id] ?: emptyList(), + action = "See All", + onMovieSelected = onMovieSelected, + onSeriesSelected = onSeriesSelected, + onEpisodeSelected = onEpisodeSelected + ) + Spacer(modifier = Modifier.height(8.dp)) + } + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeDrawer.kt b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeDrawer.kt new file mode 100644 index 0000000..312e645 --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeDrawer.kt @@ -0,0 +1,204 @@ +package hu.bbara.purefin.tv.home.ui + +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.PlayArrow +import androidx.compose.material.icons.outlined.Person +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Composable +fun TvHomeDrawerContent( + title: String, + subtitle: String, + primaryNavItems: List, + secondaryNavItems: List, + user: TvHomeUser, + onLibrarySelected: (TvHomeNavItem) -> Unit, + onLogout: () -> Unit, + modifier: Modifier = Modifier, +) { + Column(modifier = modifier.fillMaxSize()) { + TvHomeDrawerHeader( + title = title, + subtitle = subtitle + ) + TvHomeDrawerNav( + primaryItems = primaryNavItems, + secondaryItems = secondaryNavItems, + onLibrarySelected = onLibrarySelected + ) + Spacer(modifier = Modifier.weight(1f)) + TvHomeDrawerFooter(user = user, onLogout = onLogout) + } +} + +@Composable +fun TvHomeDrawerHeader( + title: String, + subtitle: String, + modifier: Modifier = Modifier +) { + val scheme = MaterialTheme.colorScheme + + Row( + modifier = modifier + .fillMaxWidth() + .padding(start = 24.dp, end = 16.dp, top = 24.dp, bottom = 20.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Row( + modifier = Modifier + .size(40.dp) + .background(scheme.primary, RoundedCornerShape(12.dp)), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center + ) { + Icon( + imageVector = Icons.Filled.PlayArrow, + contentDescription = "Play", + tint = scheme.onPrimary + ) + } + Column(modifier = Modifier.padding(start = 12.dp)) { + Text( + text = title, + color = scheme.onBackground, + fontSize = 20.sp, + fontWeight = FontWeight.Bold + ) + Text( + text = subtitle, + color = scheme.onSurfaceVariant, + fontSize = 12.sp + ) + } + } + HorizontalDivider(color = scheme.onSurfaceVariant.copy(alpha = 0.2f)) +} + +@Composable +fun TvHomeDrawerNav( + primaryItems: List, + secondaryItems: List, + onLibrarySelected: (TvHomeNavItem) -> Unit, + modifier: Modifier = Modifier, +) { + Column( + modifier = modifier + .fillMaxWidth() + .padding(vertical = 16.dp) + ) { + primaryItems.forEach { item -> + TvHomeDrawerNavItem(item = item, onLibrarySelected = onLibrarySelected) + } + if (secondaryItems.isNotEmpty()) { + HorizontalDivider( + modifier = Modifier + .padding(horizontal = 20.dp, vertical = 12.dp), + color = MaterialTheme.colorScheme.outlineVariant + ) + secondaryItems.forEach { item -> + TvHomeDrawerNavItem(item = item, onLibrarySelected = onLibrarySelected) + } + } + } +} + +@Composable +fun TvHomeDrawerNavItem( + item: TvHomeNavItem, + modifier: Modifier = Modifier, + onLibrarySelected: (TvHomeNavItem) -> Unit +) { + val scheme = MaterialTheme.colorScheme + val background = if (item.selected) scheme.primary.copy(alpha = 0.12f) else Color.Transparent + val tint = if (item.selected) scheme.primary else scheme.onSurfaceVariant + Row( + modifier = modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 4.dp) + .background(background, RoundedCornerShape(12.dp)) + .clickable { onLibrarySelected(item) } + .padding(horizontal = 16.dp, vertical = 12.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + imageVector = item.icon, + contentDescription = item.label, + tint = tint + ) + Text( + text = item.label, + color = if (item.selected) scheme.primary else scheme.onBackground, + fontSize = 15.sp, + fontWeight = FontWeight.Medium, + modifier = Modifier.padding(start = 12.dp) + ) + } +} + +@Composable +fun TvHomeDrawerFooter( + user: TvHomeUser, + onLogout: () -> Unit, + modifier: Modifier = Modifier, +) { + val scheme = MaterialTheme.colorScheme + + Row( + modifier = modifier + .fillMaxWidth() + .padding(16.dp) + .background(scheme.surfaceVariant, RoundedCornerShape(12.dp)) + .padding(12.dp), + verticalAlignment = Alignment.CenterVertically + ) { + TvHomeAvatar( + size = 32.dp, + borderWidth = 1.dp, + borderColor = scheme.outlineVariant, + backgroundColor = scheme.primaryContainer, + icon = Icons.Outlined.Person, + iconTint = scheme.onBackground + ) + Column(modifier = Modifier.padding(start = 12.dp) + .clickable { onLogout() }) { + Text( + text = user.name, + color = scheme.onBackground, + fontSize = 14.sp, + fontWeight = FontWeight.SemiBold, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + Text( + text = user.plan, + color = scheme.onSurfaceVariant, + fontSize = 11.sp, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + } + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeMockData.kt b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeMockData.kt new file mode 100644 index 0000000..4ab9432 --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeMockData.kt @@ -0,0 +1,24 @@ +package hu.bbara.purefin.tv.home.ui + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Home +import androidx.compose.material.icons.outlined.Movie +import androidx.compose.material.icons.outlined.Search +import androidx.compose.material.icons.outlined.Settings +import androidx.compose.material.icons.outlined.Tv +import org.jellyfin.sdk.model.UUID + +object TvHomeMockData { + val user = TvHomeUser(name = "Alex User", plan = "Premium Account") + + val primaryNavItems = listOf( + TvHomeNavItem(id = UUID.randomUUID(), label = "Home", icon = Icons.Outlined.Home, selected = true), + TvHomeNavItem(id = UUID.randomUUID(), label = "Movies", icon = Icons.Outlined.Movie), + TvHomeNavItem(id = UUID.randomUUID(), label = "TV Shows", icon = Icons.Outlined.Tv), + TvHomeNavItem(id = UUID.randomUUID(), label = "Search", icon = Icons.Outlined.Search) + ) + + val secondaryNavItems = listOf( + TvHomeNavItem(id = UUID.randomUUID(), label = "Settings", icon = Icons.Outlined.Settings) + ) +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeModels.kt b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeModels.kt new file mode 100644 index 0000000..585817d --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeModels.kt @@ -0,0 +1,16 @@ +package hu.bbara.purefin.tv.home.ui + +import androidx.compose.ui.graphics.vector.ImageVector +import org.jellyfin.sdk.model.UUID + +data class TvHomeNavItem( + val id: UUID, + val label: String, + val icon: ImageVector, + val selected: Boolean = false +) + +data class TvHomeUser( + val name: String, + val plan: String +) diff --git a/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeSections.kt b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeSections.kt new file mode 100644 index 0000000..05c13a9 --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeSections.kt @@ -0,0 +1,347 @@ +package hu.bbara.purefin.tv.home.ui + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.PlayArrow +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.IconButtonColors +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import coil3.request.ImageRequest +import hu.bbara.purefin.common.ui.PosterCard +import hu.bbara.purefin.common.ui.components.MediaProgressBar +import hu.bbara.purefin.common.ui.components.PurefinAsyncImage +import hu.bbara.purefin.feature.shared.home.ContinueWatchingItem +import androidx.compose.material3.IconButtonDefaults +import hu.bbara.purefin.feature.shared.home.NextUpItem +import hu.bbara.purefin.feature.shared.home.PosterItem +import org.jellyfin.sdk.model.UUID +import org.jellyfin.sdk.model.api.BaseItemKind +import kotlin.math.nextUp + +@Composable +fun TvContinueWatchingSection( + items: List, + onMovieSelected: (UUID) -> Unit, + onEpisodeSelected: (UUID, UUID, UUID) -> Unit, + modifier: Modifier = Modifier +) { + if (items.isEmpty()) return + TvSectionHeader( + title = "Continue Watching", + action = null + ) + LazyRow( + modifier = modifier.fillMaxWidth(), + contentPadding = PaddingValues(horizontal = 16.dp), + horizontalArrangement = Arrangement.spacedBy(16.dp) + ) { + items(items = items) { item -> + TvContinueWatchingCard( + item = item, + onMovieSelected = onMovieSelected, + onEpisodeSelected = onEpisodeSelected + ) + } + } +} + +@Composable +fun TvContinueWatchingCard( + item: ContinueWatchingItem, + modifier: Modifier = Modifier, + onMovieSelected: (UUID) -> Unit, + onEpisodeSelected: (UUID, UUID, UUID) -> Unit, +) { + val scheme = MaterialTheme.colorScheme + + val context = LocalContext.current + val density = LocalDensity.current + + val imageUrl = when (item.type) { + BaseItemKind.MOVIE -> item.movie?.heroImageUrl + BaseItemKind.EPISODE -> item.episode?.heroImageUrl + else -> null + } + + val cardWidth = 280.dp + val cardHeight = cardWidth * 9 / 16 + + fun openItem(item: ContinueWatchingItem) { + when (item.type) { + BaseItemKind.MOVIE -> onMovieSelected(item.movie!!.id) + BaseItemKind.EPISODE -> { + val episode = item.episode!! + onEpisodeSelected(episode.seriesId, episode.seasonId, episode.id) + } + + else -> {} + } + } + + val imageRequest = ImageRequest.Builder(context) + .data(imageUrl) + .size(with(density) { cardWidth.roundToPx() }, with(density) { cardHeight.roundToPx() }) + .build() + + Column( + modifier = modifier + .width(cardWidth) + .wrapContentHeight() + ) { + Box( + modifier = Modifier + .width(cardWidth) + .aspectRatio(16f / 9f) + .clip(RoundedCornerShape(16.dp)) + .border(1.dp, scheme.outlineVariant.copy(alpha = 0.3f), RoundedCornerShape(16.dp)) + .background(scheme.surfaceVariant) + ) { + PurefinAsyncImage( + model = imageRequest, + contentDescription = null, + modifier = Modifier + .fillMaxSize() + .clickable { + openItem(item) + }, + contentScale = ContentScale.Crop, + ) + MediaProgressBar( + progress = item.progress.toFloat().nextUp().div(100), + foregroundColor = scheme.onSurface, + backgroundColor = scheme.primary, + modifier = Modifier + .align(Alignment.BottomStart) + ) + } + Column(modifier = Modifier.padding(top = 12.dp)) { + Text( + text = item.primaryText, + color = scheme.onBackground, + fontSize = 16.sp, + fontWeight = FontWeight.SemiBold, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + Text( + text = item.secondaryText, + color = scheme.onSurfaceVariant, + fontSize = 13.sp, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + } + } +} + +@Composable +fun TvNextUpSection( + items: List, + onEpisodeSelected: (UUID, UUID, UUID) -> Unit, + modifier: Modifier = Modifier +) { + if (items.isEmpty()) return + TvSectionHeader( + title = "Next Up", + action = null + ) + LazyRow( + modifier = modifier.fillMaxWidth(), + contentPadding = PaddingValues(horizontal = 16.dp), + horizontalArrangement = Arrangement.spacedBy(16.dp) + ) { + items( + items = items, key = { it.id }) { item -> + TvNextUpCard( + item = item, + onEpisodeSelected = onEpisodeSelected + ) + } + } +} + +@Composable +fun TvNextUpCard( + item: NextUpItem, + modifier: Modifier = Modifier, + onEpisodeSelected: (UUID, UUID, UUID) -> Unit, +) { + val scheme = MaterialTheme.colorScheme + + val context = LocalContext.current + val density = LocalDensity.current + + val imageUrl = item.episode.heroImageUrl + + val cardWidth = 280.dp + val cardHeight = cardWidth * 9 / 16 + + fun openItem(item: NextUpItem) { + val episode = item.episode + onEpisodeSelected(episode.seriesId, episode.seasonId, episode.id) + } + + val imageRequest = ImageRequest.Builder(context) + .data(imageUrl) + .size(with(density) { cardWidth.roundToPx() }, with(density) { cardHeight.roundToPx() }) + .build() + + Column( + modifier = modifier + .width(cardWidth) + .wrapContentHeight() + ) { + Box( + modifier = Modifier + .width(cardWidth) + .aspectRatio(16f / 9f) + .clip(RoundedCornerShape(16.dp)) + .border(1.dp, scheme.outlineVariant.copy(alpha = 0.3f), RoundedCornerShape(16.dp)) + .background(scheme.surfaceVariant) + ) { + PurefinAsyncImage( + model = imageRequest, + contentDescription = null, + modifier = Modifier + .fillMaxSize() + .clickable { + openItem(item) + }, + contentScale = ContentScale.Crop, + ) + IconButton( + modifier = Modifier + .align(Alignment.BottomEnd) + .padding(end = 8.dp, bottom = 16.dp) + .clip(CircleShape) + .background(scheme.secondary) + .size(36.dp), + onClick = { + openItem(item) + }, + colors = IconButtonDefaults.iconButtonColors( + containerColor = scheme.secondary, + contentColor = scheme.onSecondary + ) + ) { + Icon( + imageVector = Icons.Outlined.PlayArrow, + contentDescription = "Play", + modifier = Modifier.size(28.dp), + ) + } + } + Column(modifier = Modifier.padding(top = 12.dp)) { + Text( + text = item.primaryText, + color = scheme.onBackground, + fontSize = 16.sp, + fontWeight = FontWeight.SemiBold, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + Text( + text = item.secondaryText, + color = scheme.onSurfaceVariant, + fontSize = 13.sp, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + } + } +} + +@Composable +fun TvLibraryPosterSection( + title: String, + items: List, + action: String?, + modifier: Modifier = Modifier, + onMovieSelected: (UUID) -> Unit, + onSeriesSelected: (UUID) -> Unit, + onEpisodeSelected: (UUID, UUID, UUID) -> Unit, +) { + TvSectionHeader( + title = title, + action = action + ) + LazyRow( + modifier = modifier.fillMaxWidth(), + contentPadding = PaddingValues(horizontal = 16.dp), + horizontalArrangement = Arrangement.spacedBy(16.dp) + ) { + items( + items = items, key = { it.id }) { item -> + PosterCard( + item = item, + onMovieSelected = onMovieSelected, + onSeriesSelected = onSeriesSelected, + onEpisodeSelected = onEpisodeSelected + ) + } + } +} + +@Composable +fun TvSectionHeader( + title: String, + action: String?, + modifier: Modifier = Modifier, + onActionClick: () -> Unit = {} +) { + val scheme = MaterialTheme.colorScheme + + Row( + modifier = modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 12.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + text = title, + color = scheme.onBackground, + fontSize = 20.sp, + fontWeight = FontWeight.Bold + ) + if (action != null) { + Text( + text = action, + color = scheme.primary, + fontSize = 14.sp, + fontWeight = FontWeight.SemiBold, + modifier = Modifier.clickable { onActionClick() }) + } + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeTopBar.kt b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeTopBar.kt new file mode 100644 index 0000000..f2e146d --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeTopBar.kt @@ -0,0 +1,67 @@ +package hu.bbara.purefin.tv.home.ui + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.statusBarsPadding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Cloud +import androidx.compose.material.icons.outlined.CloudOff +import androidx.compose.material.icons.outlined.Menu +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.compose.ui.zIndex +import hu.bbara.purefin.common.ui.components.PurefinIconButton +import hu.bbara.purefin.common.ui.components.SearchField + +@Composable +fun TvHomeTopBar( + onMenuClick: () -> Unit, + isOfflineMode: Boolean, + onToggleOfflineMode: () -> Unit, + modifier: Modifier = Modifier, +) { + val scheme = MaterialTheme.colorScheme + + Box( + modifier = modifier + .fillMaxWidth() + .background(scheme.background.copy(alpha = 0.95f)) + .zIndex(1f) + ) { + Row( + modifier = Modifier + .statusBarsPadding() + .padding(horizontal = 16.dp, vertical = 16.dp) + .fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(16.dp, Alignment.CenterHorizontally), + ) { + PurefinIconButton( + icon = Icons.Outlined.Menu, + contentDescription = "Menu", + onClick = onMenuClick, + ) + SearchField( + value = "", + onValueChange = {}, + placeholder = "Search", + backgroundColor = scheme.secondaryContainer, + textColor = scheme.onSecondaryContainer, + cursorColor = scheme.onSecondaryContainer, + modifier = Modifier.weight(1.0f, true), + ) + PurefinIconButton( + icon = if (isOfflineMode) Icons.Outlined.CloudOff else Icons.Outlined.Cloud, + contentDescription = if (isOfflineMode) "Switch to Online" else "Switch to Offline", + onClick = onToggleOfflineMode + ) + } + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/tv/navigation/TvNavigationModule.kt b/app-tv/src/main/java/hu/bbara/purefin/tv/navigation/TvNavigationModule.kt new file mode 100644 index 0000000..0d81090 --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/tv/navigation/TvNavigationModule.kt @@ -0,0 +1,26 @@ +package hu.bbara.purefin.tv.navigation + +import androidx.navigation3.runtime.EntryProviderScope +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.components.ActivityRetainedComponent +import dagger.multibindings.IntoSet +import hu.bbara.purefin.core.data.navigation.Route + +@Module +@InstallIn(ActivityRetainedComponent::class) +object TvNavigationModule { + + @IntoSet + @Provides + fun provideTvHomeEntryBuilder(): EntryProviderScope.() -> Unit = { + tvHomeSection() + } + + @IntoSet + @Provides + fun provideTvLoginEntryBuilder(): EntryProviderScope.() -> Unit = { + tvLoginSection() + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/tv/navigation/TvRouteEntryBuilder.kt b/app-tv/src/main/java/hu/bbara/purefin/tv/navigation/TvRouteEntryBuilder.kt new file mode 100644 index 0000000..00e494a --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/tv/navigation/TvRouteEntryBuilder.kt @@ -0,0 +1,18 @@ +package hu.bbara.purefin.tv.navigation + +import androidx.navigation3.runtime.EntryProviderScope +import hu.bbara.purefin.core.data.navigation.Route +import hu.bbara.purefin.login.ui.LoginScreen +import hu.bbara.purefin.tv.home.TvHomePage + +fun EntryProviderScope.tvHomeSection() { + entry { + TvHomePage() + } +} + +fun EntryProviderScope.tvLoginSection() { + entry { + LoginScreen() + } +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/ui/theme/Color.kt b/app-tv/src/main/java/hu/bbara/purefin/ui/theme/Color.kt new file mode 100644 index 0000000..8223689 --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/ui/theme/Color.kt @@ -0,0 +1,218 @@ +package hu.bbara.purefin.ui.theme +import androidx.compose.ui.graphics.Color + +val primaryLight = Color(0xFF8A5021) +val onPrimaryLight = Color(0xFFFFFFFF) +val primaryContainerLight = Color(0xFFFFDCC5) +val onPrimaryContainerLight = Color(0xFF6D390B) +val secondaryLight = Color(0xFF755945) +val onSecondaryLight = Color(0xFFFFFFFF) +val secondaryContainerLight = Color(0xFFFFDCC5) +val onSecondaryContainerLight = Color(0xFF5B412F) +val tertiaryLight = Color(0xFF5E6135) +val onTertiaryLight = Color(0xFFFFFFFF) +val tertiaryContainerLight = Color(0xFFE4E6AE) +val onTertiaryContainerLight = Color(0xFF464920) +val errorLight = Color(0xFFBA1A1A) +val onErrorLight = Color(0xFFFFFFFF) +val errorContainerLight = Color(0xFFFFDAD6) +val onErrorContainerLight = Color(0xFF93000A) +val backgroundLight = Color(0xFFFFF8F5) +val onBackgroundLight = Color(0xFF221A15) +val surfaceLight = Color(0xFFFFF8F5) +val onSurfaceLight = Color(0xFF221A15) +val surfaceVariantLight = Color(0xFFF3DFD2) +val onSurfaceVariantLight = Color(0xFF52443B) +val outlineLight = Color(0xFF84746A) +val outlineVariantLight = Color(0xFFD6C3B7) +val scrimLight = Color(0xFF000000) +val inverseSurfaceLight = Color(0xFF382F29) +val inverseOnSurfaceLight = Color(0xFFFEEEE4) +val inversePrimaryLight = Color(0xFFFFB783) +val surfaceDimLight = Color(0xFFE7D7CE) +val surfaceBrightLight = Color(0xFFFFF8F5) +val surfaceContainerLowestLight = Color(0xFFFFFFFF) +val surfaceContainerLowLight = Color(0xFFFFF1E9) +val surfaceContainerLight = Color(0xFFFBEBE1) +val surfaceContainerHighLight = Color(0xFFF5E5DC) +val surfaceContainerHighestLight = Color(0xFFF0DFD6) + +val primaryLightMediumContrast = Color(0xFF572A00) +val onPrimaryLightMediumContrast = Color(0xFFFFFFFF) +val primaryContainerLightMediumContrast = Color(0xFF9B5E2E) +val onPrimaryContainerLightMediumContrast = Color(0xFFFFFFFF) +val secondaryLightMediumContrast = Color(0xFF493120) +val onSecondaryLightMediumContrast = Color(0xFFFFFFFF) +val secondaryContainerLightMediumContrast = Color(0xFF856753) +val onSecondaryContainerLightMediumContrast = Color(0xFFFFFFFF) +val tertiaryLightMediumContrast = Color(0xFF363911) +val onTertiaryLightMediumContrast = Color(0xFFFFFFFF) +val tertiaryContainerLightMediumContrast = Color(0xFF6D7042) +val onTertiaryContainerLightMediumContrast = Color(0xFFFFFFFF) +val errorLightMediumContrast = Color(0xFF740006) +val onErrorLightMediumContrast = Color(0xFFFFFFFF) +val errorContainerLightMediumContrast = Color(0xFFCF2C27) +val onErrorContainerLightMediumContrast = Color(0xFFFFFFFF) +val backgroundLightMediumContrast = Color(0xFFFFF8F5) +val onBackgroundLightMediumContrast = Color(0xFF221A15) +val surfaceLightMediumContrast = Color(0xFFFFF8F5) +val onSurfaceLightMediumContrast = Color(0xFF17100B) +val surfaceVariantLightMediumContrast = Color(0xFFF3DFD2) +val onSurfaceVariantLightMediumContrast = Color(0xFF40342B) +val outlineLightMediumContrast = Color(0xFF5E5046) +val outlineVariantLightMediumContrast = Color(0xFF7A6A60) +val scrimLightMediumContrast = Color(0xFF000000) +val inverseSurfaceLightMediumContrast = Color(0xFF382F29) +val inverseOnSurfaceLightMediumContrast = Color(0xFFFEEEE4) +val inversePrimaryLightMediumContrast = Color(0xFFFFB783) +val surfaceDimLightMediumContrast = Color(0xFFD3C4BB) +val surfaceBrightLightMediumContrast = Color(0xFFFFF8F5) +val surfaceContainerLowestLightMediumContrast = Color(0xFFFFFFFF) +val surfaceContainerLowLightMediumContrast = Color(0xFFFFF1E9) +val surfaceContainerLightMediumContrast = Color(0xFFF5E5DC) +val surfaceContainerHighLightMediumContrast = Color(0xFFEADAD1) +val surfaceContainerHighestLightMediumContrast = Color(0xFFDECFC6) + +val primaryLightHighContrast = Color(0xFF492200) +val onPrimaryLightHighContrast = Color(0xFFFFFFFF) +val primaryContainerLightHighContrast = Color(0xFF703C0D) +val onPrimaryContainerLightHighContrast = Color(0xFFFFFFFF) +val secondaryLightHighContrast = Color(0xFF3D2717) +val onSecondaryLightHighContrast = Color(0xFFFFFFFF) +val secondaryContainerLightHighContrast = Color(0xFF5D4431) +val onSecondaryContainerLightHighContrast = Color(0xFFFFFFFF) +val tertiaryLightHighContrast = Color(0xFF2C2E07) +val onTertiaryLightHighContrast = Color(0xFFFFFFFF) +val tertiaryContainerLightHighContrast = Color(0xFF494C22) +val onTertiaryContainerLightHighContrast = Color(0xFFFFFFFF) +val errorLightHighContrast = Color(0xFF600004) +val onErrorLightHighContrast = Color(0xFFFFFFFF) +val errorContainerLightHighContrast = Color(0xFF98000A) +val onErrorContainerLightHighContrast = Color(0xFFFFFFFF) +val backgroundLightHighContrast = Color(0xFFFFF8F5) +val onBackgroundLightHighContrast = Color(0xFF221A15) +val surfaceLightHighContrast = Color(0xFFFFF8F5) +val onSurfaceLightHighContrast = Color(0xFF000000) +val surfaceVariantLightHighContrast = Color(0xFFF3DFD2) +val onSurfaceVariantLightHighContrast = Color(0xFF000000) +val outlineLightHighContrast = Color(0xFF362A22) +val outlineVariantLightHighContrast = Color(0xFF54463E) +val scrimLightHighContrast = Color(0xFF000000) +val inverseSurfaceLightHighContrast = Color(0xFF382F29) +val inverseOnSurfaceLightHighContrast = Color(0xFFFFFFFF) +val inversePrimaryLightHighContrast = Color(0xFFFFB783) +val surfaceDimLightHighContrast = Color(0xFFC5B6AD) +val surfaceBrightLightHighContrast = Color(0xFFFFF8F5) +val surfaceContainerLowestLightHighContrast = Color(0xFFFFFFFF) +val surfaceContainerLowLightHighContrast = Color(0xFFFEEEE4) +val surfaceContainerLightHighContrast = Color(0xFFF0DFD6) +val surfaceContainerHighLightHighContrast = Color(0xFFE1D1C8) +val surfaceContainerHighestLightHighContrast = Color(0xFFD3C4BB) + +val primaryDark = Color(0xFFFFB783) +val onPrimaryDark = Color(0xFF4F2500) +val primaryContainerDark = Color(0xFF6D390B) +val onPrimaryContainerDark = Color(0xFFFFDCC5) +val secondaryDark = Color(0xFFE4BFA7) +val onSecondaryDark = Color(0xFF422B1B) +val secondaryContainerDark = Color(0xFF5B412F) +val onSecondaryContainerDark = Color(0xFFFFDCC5) +val tertiaryDark = Color(0xFFC7CA94) +val onTertiaryDark = Color(0xFF30330B) +val tertiaryContainerDark = Color(0xFF464920) +val onTertiaryContainerDark = Color(0xFFE4E6AE) +val errorDark = Color(0xFFFFB4AB) +val onErrorDark = Color(0xFF690005) +val errorContainerDark = Color(0xFF93000A) +val onErrorContainerDark = Color(0xFFFFDAD6) +val backgroundDark = Color(0xFF19120D) +val onBackgroundDark = Color(0xFFF0DFD6) +val surfaceDark = Color(0xFF19120D) +val onSurfaceDark = Color(0xFFF0DFD6) +val surfaceVariantDark = Color(0xFF52443B) +val onSurfaceVariantDark = Color(0xFFD6C3B7) +val outlineDark = Color(0xFF9F8D83) +val outlineVariantDark = Color(0xFF52443B) +val scrimDark = Color(0xFF000000) +val inverseSurfaceDark = Color(0xFFF0DFD6) +val inverseOnSurfaceDark = Color(0xFF382F29) +val inversePrimaryDark = Color(0xFF8A5021) +val surfaceDimDark = Color(0xFF19120D) +val surfaceBrightDark = Color(0xFF413731) +val surfaceContainerLowestDark = Color(0xFF140D08) +val surfaceContainerLowDark = Color(0xFF221A15) +val surfaceContainerDark = Color(0xFF261E18) +val surfaceContainerHighDark = Color(0xFF312822) +val surfaceContainerHighestDark = Color(0xFF3C332D) + +val primaryDarkMediumContrast = Color(0xFFFFD4B7) +val onPrimaryDarkMediumContrast = Color(0xFF3F1C00) +val primaryContainerDarkMediumContrast = Color(0xFFC5814E) +val onPrimaryContainerDarkMediumContrast = Color(0xFF000000) +val secondaryDarkMediumContrast = Color(0xFFFBD5BC) +val onSecondaryDarkMediumContrast = Color(0xFF362111) +val secondaryContainerDarkMediumContrast = Color(0xFFAB8A74) +val onSecondaryContainerDarkMediumContrast = Color(0xFF000000) +val tertiaryDarkMediumContrast = Color(0xFFDDE0A9) +val onTertiaryDarkMediumContrast = Color(0xFF252803) +val tertiaryContainerDarkMediumContrast = Color(0xFF919463) +val onTertiaryContainerDarkMediumContrast = Color(0xFF000000) +val errorDarkMediumContrast = Color(0xFFFFD2CC) +val onErrorDarkMediumContrast = Color(0xFF540003) +val errorContainerDarkMediumContrast = Color(0xFFFF5449) +val onErrorContainerDarkMediumContrast = Color(0xFF000000) +val backgroundDarkMediumContrast = Color(0xFF19120D) +val onBackgroundDarkMediumContrast = Color(0xFFF0DFD6) +val surfaceDarkMediumContrast = Color(0xFF19120D) +val onSurfaceDarkMediumContrast = Color(0xFFFFFFFF) +val surfaceVariantDarkMediumContrast = Color(0xFF52443B) +val onSurfaceVariantDarkMediumContrast = Color(0xFFEDD8CC) +val outlineDarkMediumContrast = Color(0xFFC1AEA3) +val outlineVariantDarkMediumContrast = Color(0xFF9E8D82) +val scrimDarkMediumContrast = Color(0xFF000000) +val inverseSurfaceDarkMediumContrast = Color(0xFFF0DFD6) +val inverseOnSurfaceDarkMediumContrast = Color(0xFF312822) +val inversePrimaryDarkMediumContrast = Color(0xFF6F3A0C) +val surfaceDimDarkMediumContrast = Color(0xFF19120D) +val surfaceBrightDarkMediumContrast = Color(0xFF4D423C) +val surfaceContainerLowestDarkMediumContrast = Color(0xFF0C0603) +val surfaceContainerLowDarkMediumContrast = Color(0xFF241C16) +val surfaceContainerDarkMediumContrast = Color(0xFF2F2620) +val surfaceContainerHighDarkMediumContrast = Color(0xFF3A312B) +val surfaceContainerHighestDarkMediumContrast = Color(0xFF463C35) + +val primaryDarkHighContrast = Color(0xFFFFECE2) +val onPrimaryDarkHighContrast = Color(0xFF000000) +val primaryContainerDarkHighContrast = Color(0xFFFEB27A) +val onPrimaryContainerDarkHighContrast = Color(0xFF170700) +val secondaryDarkHighContrast = Color(0xFFFFECE2) +val onSecondaryDarkHighContrast = Color(0xFF000000) +val secondaryContainerDarkHighContrast = Color(0xFFE0BBA3) +val onSecondaryContainerDarkHighContrast = Color(0xFF170700) +val tertiaryDarkHighContrast = Color(0xFFF1F4BB) +val onTertiaryDarkHighContrast = Color(0xFF000000) +val tertiaryContainerDarkHighContrast = Color(0xFFC3C691) +val onTertiaryContainerDarkHighContrast = Color(0xFF0B0C00) +val errorDarkHighContrast = Color(0xFFFFECE9) +val onErrorDarkHighContrast = Color(0xFF000000) +val errorContainerDarkHighContrast = Color(0xFFFFAEA4) +val onErrorContainerDarkHighContrast = Color(0xFF220001) +val backgroundDarkHighContrast = Color(0xFF19120D) +val onBackgroundDarkHighContrast = Color(0xFFF0DFD6) +val surfaceDarkHighContrast = Color(0xFF19120D) +val onSurfaceDarkHighContrast = Color(0xFFFFFFFF) +val surfaceVariantDarkHighContrast = Color(0xFF52443B) +val onSurfaceVariantDarkHighContrast = Color(0xFFFFFFFF) +val outlineDarkHighContrast = Color(0xFFFFECE2) +val outlineVariantDarkHighContrast = Color(0xFFD2BFB3) +val scrimDarkHighContrast = Color(0xFF000000) +val inverseSurfaceDarkHighContrast = Color(0xFFF0DFD6) +val inverseOnSurfaceDarkHighContrast = Color(0xFF000000) +val inversePrimaryDarkHighContrast = Color(0xFF6F3A0C) +val surfaceDimDarkHighContrast = Color(0xFF19120D) +val surfaceBrightDarkHighContrast = Color(0xFF594E47) +val surfaceContainerLowestDarkHighContrast = Color(0xFF000000) +val surfaceContainerLowDarkHighContrast = Color(0xFF261E18) +val surfaceContainerDarkHighContrast = Color(0xFF382F29) +val surfaceContainerHighDarkHighContrast = Color(0xFF433933) +val surfaceContainerHighestDarkHighContrast = Color(0xFF4F453E) diff --git a/app-tv/src/main/java/hu/bbara/purefin/ui/theme/Theme.kt b/app-tv/src/main/java/hu/bbara/purefin/ui/theme/Theme.kt new file mode 100644 index 0000000..d99c74d --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/ui/theme/Theme.kt @@ -0,0 +1,275 @@ +package hu.bbara.purefin.ui.theme +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext + +private val lightScheme = lightColorScheme( + primary = primaryLight, + onPrimary = onPrimaryLight, + primaryContainer = primaryContainerLight, + onPrimaryContainer = onPrimaryContainerLight, + secondary = secondaryLight, + onSecondary = onSecondaryLight, + secondaryContainer = secondaryContainerLight, + onSecondaryContainer = onSecondaryContainerLight, + tertiary = tertiaryLight, + onTertiary = onTertiaryLight, + tertiaryContainer = tertiaryContainerLight, + onTertiaryContainer = onTertiaryContainerLight, + error = errorLight, + onError = onErrorLight, + errorContainer = errorContainerLight, + onErrorContainer = onErrorContainerLight, + background = backgroundLight, + onBackground = onBackgroundLight, + surface = surfaceLight, + onSurface = onSurfaceLight, + surfaceVariant = surfaceVariantLight, + onSurfaceVariant = onSurfaceVariantLight, + outline = outlineLight, + outlineVariant = outlineVariantLight, + scrim = scrimLight, + inverseSurface = inverseSurfaceLight, + inverseOnSurface = inverseOnSurfaceLight, + inversePrimary = inversePrimaryLight, + surfaceDim = surfaceDimLight, + surfaceBright = surfaceBrightLight, + surfaceContainerLowest = surfaceContainerLowestLight, + surfaceContainerLow = surfaceContainerLowLight, + surfaceContainer = surfaceContainerLight, + surfaceContainerHigh = surfaceContainerHighLight, + surfaceContainerHighest = surfaceContainerHighestLight, +) + +private val darkScheme = darkColorScheme( + primary = primaryDark, + onPrimary = onPrimaryDark, + primaryContainer = primaryContainerDark, + onPrimaryContainer = onPrimaryContainerDark, + secondary = secondaryDark, + onSecondary = onSecondaryDark, + secondaryContainer = secondaryContainerDark, + onSecondaryContainer = onSecondaryContainerDark, + tertiary = tertiaryDark, + onTertiary = onTertiaryDark, + tertiaryContainer = tertiaryContainerDark, + onTertiaryContainer = onTertiaryContainerDark, + error = errorDark, + onError = onErrorDark, + errorContainer = errorContainerDark, + onErrorContainer = onErrorContainerDark, + background = backgroundDark, + onBackground = onBackgroundDark, + surface = surfaceDark, + onSurface = onSurfaceDark, + surfaceVariant = surfaceVariantDark, + onSurfaceVariant = onSurfaceVariantDark, + outline = outlineDark, + outlineVariant = outlineVariantDark, + scrim = scrimDark, + inverseSurface = inverseSurfaceDark, + inverseOnSurface = inverseOnSurfaceDark, + inversePrimary = inversePrimaryDark, + surfaceDim = surfaceDimDark, + surfaceBright = surfaceBrightDark, + surfaceContainerLowest = surfaceContainerLowestDark, + surfaceContainerLow = surfaceContainerLowDark, + surfaceContainer = surfaceContainerDark, + surfaceContainerHigh = surfaceContainerHighDark, + surfaceContainerHighest = surfaceContainerHighestDark, +) + +private val mediumContrastLightColorScheme = lightColorScheme( + primary = primaryLightMediumContrast, + onPrimary = onPrimaryLightMediumContrast, + primaryContainer = primaryContainerLightMediumContrast, + onPrimaryContainer = onPrimaryContainerLightMediumContrast, + secondary = secondaryLightMediumContrast, + onSecondary = onSecondaryLightMediumContrast, + secondaryContainer = secondaryContainerLightMediumContrast, + onSecondaryContainer = onSecondaryContainerLightMediumContrast, + tertiary = tertiaryLightMediumContrast, + onTertiary = onTertiaryLightMediumContrast, + tertiaryContainer = tertiaryContainerLightMediumContrast, + onTertiaryContainer = onTertiaryContainerLightMediumContrast, + error = errorLightMediumContrast, + onError = onErrorLightMediumContrast, + errorContainer = errorContainerLightMediumContrast, + onErrorContainer = onErrorContainerLightMediumContrast, + background = backgroundLightMediumContrast, + onBackground = onBackgroundLightMediumContrast, + surface = surfaceLightMediumContrast, + onSurface = onSurfaceLightMediumContrast, + surfaceVariant = surfaceVariantLightMediumContrast, + onSurfaceVariant = onSurfaceVariantLightMediumContrast, + outline = outlineLightMediumContrast, + outlineVariant = outlineVariantLightMediumContrast, + scrim = scrimLightMediumContrast, + inverseSurface = inverseSurfaceLightMediumContrast, + inverseOnSurface = inverseOnSurfaceLightMediumContrast, + inversePrimary = inversePrimaryLightMediumContrast, + surfaceDim = surfaceDimLightMediumContrast, + surfaceBright = surfaceBrightLightMediumContrast, + surfaceContainerLowest = surfaceContainerLowestLightMediumContrast, + surfaceContainerLow = surfaceContainerLowLightMediumContrast, + surfaceContainer = surfaceContainerLightMediumContrast, + surfaceContainerHigh = surfaceContainerHighLightMediumContrast, + surfaceContainerHighest = surfaceContainerHighestLightMediumContrast, +) + +private val highContrastLightColorScheme = lightColorScheme( + primary = primaryLightHighContrast, + onPrimary = onPrimaryLightHighContrast, + primaryContainer = primaryContainerLightHighContrast, + onPrimaryContainer = onPrimaryContainerLightHighContrast, + secondary = secondaryLightHighContrast, + onSecondary = onSecondaryLightHighContrast, + secondaryContainer = secondaryContainerLightHighContrast, + onSecondaryContainer = onSecondaryContainerLightHighContrast, + tertiary = tertiaryLightHighContrast, + onTertiary = onTertiaryLightHighContrast, + tertiaryContainer = tertiaryContainerLightHighContrast, + onTertiaryContainer = onTertiaryContainerLightHighContrast, + error = errorLightHighContrast, + onError = onErrorLightHighContrast, + errorContainer = errorContainerLightHighContrast, + onErrorContainer = onErrorContainerLightHighContrast, + background = backgroundLightHighContrast, + onBackground = onBackgroundLightHighContrast, + surface = surfaceLightHighContrast, + onSurface = onSurfaceLightHighContrast, + surfaceVariant = surfaceVariantLightHighContrast, + onSurfaceVariant = onSurfaceVariantLightHighContrast, + outline = outlineLightHighContrast, + outlineVariant = outlineVariantLightHighContrast, + scrim = scrimLightHighContrast, + inverseSurface = inverseSurfaceLightHighContrast, + inverseOnSurface = inverseOnSurfaceLightHighContrast, + inversePrimary = inversePrimaryLightHighContrast, + surfaceDim = surfaceDimLightHighContrast, + surfaceBright = surfaceBrightLightHighContrast, + surfaceContainerLowest = surfaceContainerLowestLightHighContrast, + surfaceContainerLow = surfaceContainerLowLightHighContrast, + surfaceContainer = surfaceContainerLightHighContrast, + surfaceContainerHigh = surfaceContainerHighLightHighContrast, + surfaceContainerHighest = surfaceContainerHighestLightHighContrast, +) + +private val mediumContrastDarkColorScheme = darkColorScheme( + primary = primaryDarkMediumContrast, + onPrimary = onPrimaryDarkMediumContrast, + primaryContainer = primaryContainerDarkMediumContrast, + onPrimaryContainer = onPrimaryContainerDarkMediumContrast, + secondary = secondaryDarkMediumContrast, + onSecondary = onSecondaryDarkMediumContrast, + secondaryContainer = secondaryContainerDarkMediumContrast, + onSecondaryContainer = onSecondaryContainerDarkMediumContrast, + tertiary = tertiaryDarkMediumContrast, + onTertiary = onTertiaryDarkMediumContrast, + tertiaryContainer = tertiaryContainerDarkMediumContrast, + onTertiaryContainer = onTertiaryContainerDarkMediumContrast, + error = errorDarkMediumContrast, + onError = onErrorDarkMediumContrast, + errorContainer = errorContainerDarkMediumContrast, + onErrorContainer = onErrorContainerDarkMediumContrast, + background = backgroundDarkMediumContrast, + onBackground = onBackgroundDarkMediumContrast, + surface = surfaceDarkMediumContrast, + onSurface = onSurfaceDarkMediumContrast, + surfaceVariant = surfaceVariantDarkMediumContrast, + onSurfaceVariant = onSurfaceVariantDarkMediumContrast, + outline = outlineDarkMediumContrast, + outlineVariant = outlineVariantDarkMediumContrast, + scrim = scrimDarkMediumContrast, + inverseSurface = inverseSurfaceDarkMediumContrast, + inverseOnSurface = inverseOnSurfaceDarkMediumContrast, + inversePrimary = inversePrimaryDarkMediumContrast, + surfaceDim = surfaceDimDarkMediumContrast, + surfaceBright = surfaceBrightDarkMediumContrast, + surfaceContainerLowest = surfaceContainerLowestDarkMediumContrast, + surfaceContainerLow = surfaceContainerLowDarkMediumContrast, + surfaceContainer = surfaceContainerDarkMediumContrast, + surfaceContainerHigh = surfaceContainerHighDarkMediumContrast, + surfaceContainerHighest = surfaceContainerHighestDarkMediumContrast, +) + +private val highContrastDarkColorScheme = darkColorScheme( + primary = primaryDarkHighContrast, + onPrimary = onPrimaryDarkHighContrast, + primaryContainer = primaryContainerDarkHighContrast, + onPrimaryContainer = onPrimaryContainerDarkHighContrast, + secondary = secondaryDarkHighContrast, + onSecondary = onSecondaryDarkHighContrast, + secondaryContainer = secondaryContainerDarkHighContrast, + onSecondaryContainer = onSecondaryContainerDarkHighContrast, + tertiary = tertiaryDarkHighContrast, + onTertiary = onTertiaryDarkHighContrast, + tertiaryContainer = tertiaryContainerDarkHighContrast, + onTertiaryContainer = onTertiaryContainerDarkHighContrast, + error = errorDarkHighContrast, + onError = onErrorDarkHighContrast, + errorContainer = errorContainerDarkHighContrast, + onErrorContainer = onErrorContainerDarkHighContrast, + background = backgroundDarkHighContrast, + onBackground = onBackgroundDarkHighContrast, + surface = surfaceDarkHighContrast, + onSurface = onSurfaceDarkHighContrast, + surfaceVariant = surfaceVariantDarkHighContrast, + onSurfaceVariant = onSurfaceVariantDarkHighContrast, + outline = outlineDarkHighContrast, + outlineVariant = outlineVariantDarkHighContrast, + scrim = scrimDarkHighContrast, + inverseSurface = inverseSurfaceDarkHighContrast, + inverseOnSurface = inverseOnSurfaceDarkHighContrast, + inversePrimary = inversePrimaryDarkHighContrast, + surfaceDim = surfaceDimDarkHighContrast, + surfaceBright = surfaceBrightDarkHighContrast, + surfaceContainerLowest = surfaceContainerLowestDarkHighContrast, + surfaceContainerLow = surfaceContainerLowDarkHighContrast, + surfaceContainer = surfaceContainerDarkHighContrast, + surfaceContainerHigh = surfaceContainerHighDarkHighContrast, + surfaceContainerHighest = surfaceContainerHighestDarkHighContrast, +) + +@Immutable +data class ColorFamily( + val color: Color, + val onColor: Color, + val colorContainer: Color, + val onColorContainer: Color +) + +val unspecified_scheme = ColorFamily( + Color.Unspecified, Color.Unspecified, Color.Unspecified, Color.Unspecified +) + +@Composable +fun AppTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + dynamicColor: Boolean = false, + content: @Composable() () -> Unit +) { + val colorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + + darkTheme -> darkScheme + else -> lightScheme + } + + MaterialTheme( + colorScheme = colorScheme, + typography = AppTypography, + content = content + ) +} diff --git a/app-tv/src/main/java/hu/bbara/purefin/ui/theme/Type.kt b/app-tv/src/main/java/hu/bbara/purefin/ui/theme/Type.kt new file mode 100644 index 0000000..d7a6cb2 --- /dev/null +++ b/app-tv/src/main/java/hu/bbara/purefin/ui/theme/Type.kt @@ -0,0 +1,5 @@ +package hu.bbara.purefin.ui.theme + +import androidx.compose.material3.Typography + +val AppTypography = Typography() diff --git a/app-tv/src/main/res/drawable/purefin_logo_background.xml b/app-tv/src/main/res/drawable/purefin_logo_background.xml new file mode 100644 index 0000000..ca3826a --- /dev/null +++ b/app-tv/src/main/res/drawable/purefin_logo_background.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-tv/src/main/res/mipmap-anydpi-v26/purefin_logo.xml b/app-tv/src/main/res/mipmap-anydpi-v26/purefin_logo.xml new file mode 100644 index 0000000..fe7f035 --- /dev/null +++ b/app-tv/src/main/res/mipmap-anydpi-v26/purefin_logo.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app-tv/src/main/res/mipmap-anydpi-v26/purefin_logo_round.xml b/app-tv/src/main/res/mipmap-anydpi-v26/purefin_logo_round.xml new file mode 100644 index 0000000..fe7f035 --- /dev/null +++ b/app-tv/src/main/res/mipmap-anydpi-v26/purefin_logo_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app-tv/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/app-tv/src/main/res/mipmap-anydpi/ic_launcher_round.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/app-tv/src/main/res/mipmap-anydpi/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app-tv/src/main/res/mipmap-hdpi/purefin_logo.webp b/app-tv/src/main/res/mipmap-hdpi/purefin_logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..864416eba64dde8d5edcc40cab9c9823047dc935 GIT binary patch literal 3936 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

xtV9Uu-$lB%EsDvgBm$( zAZl@`7ar)8dGi$mI~3cz$=kR4pH0hM<8My64dU@4hx+Uu_NTe)Zt0BWp4$=6R6|(B z0AKW;z4WH+!|<5Zjs6VU-*@HLn|u9V-l2-?x{=Bpc<@LrXo$|*smW)y-|e+j@lQp7 zf(j_$PZDY(Ks|0$1(;HU6rzMefe2ITn1VLZ0jPp-VQK%*+r1o*e)EMmo!CW~LaSt# uR76?C9WT8UZ*gAITssFuv}jNq`iDu{iwj!+p6>U`=_YPGWyi}e`9cMJMv<%l literal 0 HcmV?d00001 diff --git a/app-tv/src/main/res/mipmap-hdpi/purefin_logo_foreground.webp b/app-tv/src/main/res/mipmap-hdpi/purefin_logo_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..a41f551dfabf3ca85a6d3667ed24af5663b83bb4 GIT binary patch literal 12094 zcmV-EFTv1KNk&FCF8}~nMM6+kP&iB}F8}~9p+G1Q35RXlND`bNr^|Y$|AJ@sZy=)o z6QEanmVDqv0Ek%EsQQKgD9xkJRi<|7zn$uE8~+@q3fb9Kp90&NAzkQ{vf)Cc zGn)dRaJF;fi~*D$1Hh|L6#{A^RurdKyCiFE%ZraM;KsJ?s#$o#gZFSpk&V3iuSlUr zDIOYdAW4#G<@d97|I>Zj3dfNoIZD1ZCQeNBp*0wQ|8`*jkN!^p?z4O@bAtf@IqzVC zBuJt|=9xN7y)?HI0)S!EW1XZEWH{|5h2SD^Y=0bdiX`jWCP^=~B9h%!POIZGu9iA> zx+%pne|KG{*!4Lk00499In{Z}Fx7dg>x6S3)k9JBU20wx6m<%}1JA0A*W)No0s;J| zpJhEOM!>;vfDZ`XjE`hc6c7+_A^||*f`mGz(k}joet{=Y0Qe9>@HhDHzK8Bx9ctUQ zk)-{{&ONG9N5llMM2|lv-Wz@o{5nY}2$fB8&Gt`{ZQD-Oyz2YDHK6bNUhqOaGC(HC zN;x1Qnb7xry9%t0$^hweYm165`iFtjg`Z287Cm^tq<=hIn06ISI_RW9k4w{rMaPDl z4k{XUU3%c2v}nO48`7mkCtUPQI^mDXhvm|R5=^}4f#HYDIrzE|bZsa)eH&D8;j{s6 zZQH7qwf0vabI<6-C8Pf?{GBZ;vTfH^#+bX_HzH7iE^Hwx=N#@H0)is{N1Fhw`u{z4 zBI6wgt!_yjR?|uwI(P3n=bR(WHuFXJ5_|~}<(zZQIkzTu&RIw2^vPBAzPIsr zc2mb(W$Kz##7ex97547aGLAIY{=+qP{hr(A07gVtJ` znMvB(4#AG{wjGD9Z3#7I#$lt6-fJn@uOvy1ZQHhG?h#oHbkO=(n8N7)|71~X(TkhZ zLIbqks#T^(93cMJT>fjvFF&9YID!*7sAJPOqJyZkqu|hpJGxXij_N?#p&o*Ti%Ks*^HtkjZ@`UK{-1Nv z-Y)f`9qL`lU6Ad`c z#8kHl6T#VL#HALcA*CWb!i{?(3D4P}T{YliBbl7Ea+>cybfmTpm%YfW0O6~b+_ ztKt5vj}+AhHf~v+Rh2=|N;w-09p%_13fkm*meXg*}vz zE!(1zx6mbOsz3ccuSFdgKR8xTgvx(A%13VW)jL=6mN`1s83VJ2B`3<6- zkDWJm7zTJnIuW_h`MRO!>vUrr1~LfTMjCt%b{?RY<-nwyHpBQZnkX0-!D%oy=JIxn zR#Oc^6MKja5H`RoS#WrPGeA;ft?KtBI#nX{JPw67u~g$ z4&K0O*OoiDJvR^V3OSP66yh{hf;MC18Q)6+s(=iL(~CFQ0jqSflcjo@oM_KUX0CRr8ej%aA0t9QyIzO#X@_>T12(sp>Ipuc z4K3)UGX^Zz4Q<(D)HXtp+4IWtXY{J@AaCS&)ffWiJ5KZlmAzAH*)MaaZhI~W#%s8q z2sJn57`V2}Rep*M`#DZa7UCmkTM9QEpWk2d)7-4vd|2sCG4CQ_e)TBotcC3Ob|}ab z*DyJHVa!c)dn15CZ_Ch7*SwPHvw>T|qjTtpX}G3a)uTVSg{SH<&uMq&s?A#GdFc65>E=U965{FFYWBV1 zQEX&93=NY~DQot*ngL>Swwy^IBF?7>4LXKg&5b@1aMy=AI1_GUrH;s8^v{FM!xKd{{r=Duw zr|8aa=NxhEb7mpMi6DkP!e#Q_QHotCcPzNnE#2JXLzxk`OZBsfs7a3T8S!-|=Udyg z&jc6JpGX_XnMNE2B&hWnvN{`6D$(9)C7DY$ zI+@Ul3KXE75$5ZgAu~}`*4Mq;QY0!yuln|LjOHy`@HAd)caEF~D96RjS9+uD)GeLOrK*BwzjX$y zOet5#Zt9v*d8qXbdQ%PZ5$z)jbv_y4Qs1YGT!EGeMSBA1jLN(Q-*VMPS#$KTm9UhPmJ0F!f%4TR(o<^B@TN>?StVGTFVjXM%yO zeBIl2HUSvbw*Xb^tC_dQMZ7}8fir5R@lmM2OaQ3DP*n$42Neu(!Gurc5{!>pmg4w* z05D-vur1GF3``Jxkm`Z<`W;sp9)q90QyX75sMfqEX!bE0ux`?Ffi7FduBl?;9Bx*5@3Xb z$C2|``|Kz(xt6=D)6vxpwa+jLmUh$-CTCD>VnNc_s)Im-2U*HE@nWyE<*+s@Rl-<^ zdFfL*bdnGL$jOq*6jD$)AzK72%`_YUEq}#2<-zPvp(ckR_697(dN#i@N7##Ja%Q@= zY9!p}5f1hzZynT4WgCy$;Lgnoacw7XgzmZuwQL0oaOjriQT4`T^-|aLcHxz{m+UD)jbT z0c0#2n8TBMF5k0hyMb<@$EKs3mI_cEa?J0gVPX((ZNBtl^4_y@Q>LbD6ymoc6 z^D98J%a7|{G5S|m$9+nX*U*U$Y|6(=_##|(X~oIYF}jI#$bnQe?r69CxVv`MC3xKV zGVk(}Ytf7N9drRVs0$V4|3fv&&F8-HOqFiM<$~d%k*1FIAZ+rt3$cevNW4WSlA)(< zJ8^No1yn@M1Q!)@Z^B|GRS9=`U#9h+ss0V-ANdMx=|??O!jImuvpQLO$qs9eNeCiy zQV2Dg7I|svdg{3&ZH@X-8nL=n^#Grt?PUUbBlm|$|BLiC>6>nkpCx>jz{fiHTxf|- zYNxwyNv^4as#CIGDJo>c`=LMsBubUb1t@1zMWNHl0?me;0vDBC<_RMD>d{-ZE-yb48K~B=Y zoYEh2eub{ZJzMO#CEy_2Jp!TI3k5W4eub=s-$?(Q%%4LR*b05FYQE#pr;B?8U6%ZJ_WU3yMePZCN&Ii&M$7e! zmVV>Myv!j^LOU}rs|}T7fxuA7awArqO(R5Z6{^83pB!pC^D8U(By#VQc_@4!@r*fx zsDFI=lgt9!C!BA&F~*F+i1VqOK-j9fqH^z_VedJ1|MtHBN07hzHfU$|_fz{N+tStY zzbHumN$khvnv)-#`j5K*47t{|^^4hk@im7N$*rqaqG!^56oA8Xi|aKq&L(&yp_ebX z7_50UBbMI8W39ZFH6=(SbzMp@U7{Clvi2DwloBUdH@?!FvM5!s3cL)obYqlSbqTlD z&R;y@zX^F2zMFqh_P?I>J%ncxzd(HTtx?lAL&0=Fg7mwi|Cways4skaqPhvxIH=t@ zch<5xF~*#?sU%`Linc8(vTVn`Wsg>&mcqO@wxvi)$>W*qaoo(Eyzflqx}8O)VX~mOYEb<6b+joPw{ae{^%9()hR>q<77W zTr9iRNlYQBHM~ujn&9#$t^H<`3B!AYBvTPAq zj2CqU6{O^Sj4dpq)U*Qwcf7Ooy;IlO;#ges*rTVut50h{(W|qu@Ui@s`oU36U2rx=gnwkk3pLM1pF((S3Ss-oXVmH<*ZI=D&(08u**x0aJp!cl>6)#W1E+G=~E4txz2Dx zS*Coby+(G8rx(;+`W8+a?jCp2HIL6(PrDpndPAw5o-NsMB!5-OrCdwS*~*9g7(TWywn9)?WiiD)Y*7k?#!32>G7T9j_mFn=jYH z?YW)sWsTdD$=<#;CZ$UmaKELuSA~4eKG-v4+YP*qc-$mkF#09|v^07VLh2_1;IqL- zCYOFv*g}=t_1!yV7lztbDa{*SC`~y)@#e_KD*q%anl6^Vs8y1u%n6lN;p*q!b_j5Y z8BEDYUv%DZ7x#hVGuI;k?X%62A`g!_4lf7ecq^vlWG?V&|BzBIacE87r6p;#`4(o)wkbA+sjkWf<(D{Tv9TqCB_nuq&rrM5ppr>!(}M-m6GRI$R8=#Y*CQ6vsKzv}&;6~x=#GNdKV>KN z9!Df;N05Z9L?{|173kMRS!|=A*fxLzj02KbS?C2$ASuA*ay~Q03?MfGnvf36EN2I& z3VzhwK~|}{bgBhyHAN_51S7_32-cGEu&y!GIY&5PGT*7FmEmR)$(~|mylQgn-j zX)vB2QlT9HSG7SvC9@Zi3<{3cINw9Vd@wH2-!FM^ko4^5lB8-)9dxZfp^2zS4Qu4j1$Y7K=R_NUr<=3Fl8V-!PcuM36? z77m=*bPCn-8I*w{4Z6nZv#m&WNRwL!QpWHPM^6L5>I(L+wi z?LtlgE^793?aCv~6=9Vs!)HhYD>N8GoV1Bt!5pS(8c}2vllZQsI(p0|ywF_J-WjbI z*J2kkc^!g|jkVh~b8gVB=cwT^v@bpKE)^k-VxC0m+w;HtJ$yv@15pmjCRvy0%~gvs z$|dXdY%m5}l_s15f$LFGtE)^ooYo}laT>w{#LIi&aYZ289_GW&8QV%f->Zqv9Bf5r zNZ!=utg*a-@xXzwbV_#GmSnH}m7oYGJo(LEo$IHd{KXa}>LZd~TDSdE>-6u-+pd2V zawE!!OZ`~${EzthzT*AW76lgN+95YJHRBVxx3kFr0+93z%9HRyqay)8;c_fZ&-4=J z={aXCB;gRl+ti#>yfJ}!)|<+*4c3sk{^&|BeM+82L(BBt;K-DGw$wQ2IueUpPrb`V zX}i*LnSmk@%h8z}3DI6%r)NUnV)YafK5o4KCUU+g$^C8j<)_TvW$_hhvmlrfj%XD? z3L%J~oK1uG01c4<;#3TB$Iaj(T=>_DJ4FN`n#!U7=cIquCjFL>jY(vd83*ZF`$E8K z>9N#mWIoW*T^_lKrE{l}3Q_jprFNjTv-p?2qN8>>bv&uH&2YG5!fRijI~j7}Q(YYq zV)-vEng3(`tRJVfC?#5|l_N54g$T?Un^izM6DUQ^uSaE>EMOE27i%H8K*(rW8#J)$ z##8LT!j3pHH7c>u*9f?&=iT8I5L`2tvGI&2jk_$tx^+_Qp8ikb{-)i^891nYw8nj= zBU5c5GMrQCF+5ysU^GI?AX}#iY1_2P#DH*AkIE=b92#@p5g@{(i$Gk5lAf7aU<{^Q zj1Af8qo6ws%Y*qoG;99R4NXna0@CK@#zN`|*L`97^dmkTPrYVz&6mce#&t>V-kE6i z(%b%RV<4S_ExoNq!%K0HbsmREc)^KJb?xG$26isLQ0ua&9}44RWDH@#;jS|>r662t zrU*`8Sfs$+2$4g7rt+y_t#AKtsznK(^$OXuDK3=%WKB=X;_amS?AqYv-v%QonyWOZ zNagLZCV_L$AiL*2e5W~3`%WQQx@b{>*ZLtMh;;Da9GMfDA0Y0hBwC69pNiL9=wXzZ zk$~cCV(WbU%ZLdc#wQ7c9n_i>j!vz=tc4$A+p3t=RJ`3Kwyh$Y*qag2QvE>!r*7RL z-(xYWJ9oeCoI!BkzHyHRTGhP2|Ln>PVRE1i1;ge{xvUIOIB@6$F8lomnzMT*uBNe9 z2`DxmrWAZO%uxiCbXcm0z@U=x2z_VfzyNC;ye@{_Qe>wjwQ^&TY^`iDi4=Cp$<>_H z$h?QC2aH!K$cb9d-L+q##!hFDRAlcyKid){u?TB1>0N92GhiN>u3Mt=cr3R1aHujM zk3z}SDz~NYAeFLkzP)H+IdvArA);WfTaQu{S)W;Y2^%MF!-YjLwayuXN~>nx zaJ&VGiR&n_jvMwt84Qt@bOH^j{ct`rD!q5GU7q{ZcuFu>6Ju}qV*L_vM6)(EXKEjM zI&;oic_Ca^UMVlLA}o1A5@a^0pU!$Tc=}0-34&^YE1=Gu%4Vyrr!38$tzLEGV@rnG z(b^=jj4+}Yhu_hoK!H3F2~Hr5x{HdtKq>`FKOdJ;h)x$p2AOb{PH(F0*W&p{(3eB6 zc$~4dFfn6ADy2QZ*Tn>Wh{#-gvFswRO4y?ORprOO)Y#am|n|ijlN?IM^ z>ZGA^y^NTCnmO^z6*Szv`W`j;vqWq4?yh33^8WpUluR8&Q#Go)e)I~q^!1v}kTl+n zgTD|2A!={eqA_EmwW&O%*m-7MeDgRB7GM%lld_$_;`G3BA5$)Dob7f9elgm5*AMv) zcV8HJT*2=0$YI=%YW#@DkB_$-ngt*JfKlr~YQJFdtX90Rj8|6sjqh!g?|F@T^octo zGeepo&iF%2Q7Z?sA}54wPNdyZ`Kei)jgc{8xW62bE*FC}V2k!#IuH+648vuH$Nu%|S!R};)wVI0=a`R#8pqlzGn{pD zp0!jgW6fVr@mBJPs>Tkd=bW6^D2mBft0XHa_RpXh|G8iNcl?%xR~yCjKC>9Jkb}PE zh=*f=!u0+J9bEEqHrG-!Fv6OEgn9k%>tNQnO=ctYx%TiN16u#;Ya?c_= zISe{>Z0RA479$aHJ)6({1WtvY?)}qy=0_hAwB+nSBzp}ue&N8la2T@+>fzidIu}X> z@Ov_okUGsfS1p%=M;8#F(kmDK_2MC-?l#XKo!OS8!xbTFU*g%M^v}L@Dcjt1RKb&d zrC-`1D&5bE(1zLf85en6F7IF6htI}y7mR(bGg|0>8VAR6f!xbU*yzA0{?&7wvODRE z+Ug`;2of)chgJK&2+{WFJ0Hiu!z+)e-C;AV5!*)8v0S6w?$jpFmcx5hlniG*GSBr2 zdMhtNdkGE$w91Az95`-pn(^W43%vy~zqMvNW3M#kbALQWFB1MiVA zW)y0DgTC}{EmW?P4R(}$>gcjvABO;XGJ(w*Uqa;s_K=Vz^yR?x%}|aE>$c4jW%)8t zsH$*4QU}yah~(tFcofhk=PV$3J-64stDd_n?EUe5w)xcpT6(EZz%=G$>KLR= z<%2y&vASCwu9~N6oYoSoOa{O9U3EN5`Wdsy70@}USilYnP*lg4>1CPTD4p^BY>pi| z`Y9AFRtXJ{-DcYq-ue~W^iz@e5JhQU26T6rrvneCNi3Xg`K6Q?vbw*msb=@}U3#?6 zi`+pp@C=Wdtu0<7s1eA>ra3*g)bm-wCUN6nN-k;2zbc#nmyHI~ckB1rbCtc;>+4$X zd@YY7Zozdie&f;K`X^#LL@Gb|5R7MAUGBN5QkvL-ezCZoI&VMgdN%RJE>nNo;~~kD z^3zE??@RBSfO7rzy}_oUnr5R(QqLo$QppE*r{Y2~K}P3%X_%4l9l$U=009XgjKy{$ zbDN;Wz&G`(Ly@zN&Nq9G!wMGLNo2jw3BK^sMW@XDI&Q9N^A4d%&bJfsTDY(TNfqVwk)rpCZ7a%b`fQx=dXD#NS{0IOrkZmO<5q4sw!A||fdRN5A;({xO3H_g zKe}I2$0Vqo-~6z2ZB$~`_Qmo^Ejr{N%9P2|@^088o{F+=aXA~~9xnj(Y2z*I;uT(G zdU^F+W(3#QOsG$78SJeQA(82(-h?*Sbj-UiSf!HTCugGylWV_bcJ(5n9w)DSemaaUjO&oU z>s#hU%(#9f7N?28{GA+&vx8DYr~Pmz)&*m{C|QgcS*u>>BVk>_p;Qt>Owi$1#+>eP!1r{a1(^E!*{6=N5C)y?i%v_0}pK_W(N6DLm0Pm@cj zf>e}Ix-TpH9G)81kvwHj69{Fi=e9s!hD^^z)BqEU7{&c@^R{fiSzfxZBxUDO7_MxS zN*hY1gop2p&t@qBMau*@L{azC493=)9jCx#Gv2Qgv0$z|jpPA>W4G74QA=rR9NUH? zH*WGxnr`PNt9sS4UD4M+asMv1jnZVzdlukEzj!_xK%bqcaYL`^DQ->WQn%&p4(C&fXruSHWpJShK9u{RKDXj5o&JJU znWkA`>tUe(?ZiQ$vbA3Sc#au8uIblq>%pGWynAZeEk`5JFCLAv4R6t3>91v8X1<6i zyv!jqJ)14W<@c}5MOfyfG11A?F-c{Bw{ONtRnd|8;g|B4`^^4l`s9C}{GTVUZM%H# z`{Ps1cjZv9LIsMx)#Z&~SbEDL3WhqPkH`Vfa(Rdu>1;TWQ}glC`(dCq_ZZ$JE54L&jgjvtxlGLoZi5u(!1&v5tDeLc z#C@`Ipt-w`h*~Gn`#k4P?+(IZEk2v&(?i|2IaGRNX*;v8L(&#r;MaZbE}qwaXd8rT zXUwU{86mF}K#?7p{!IS%D<2NIvYfbn{X_XMM)LJK4rbI56ncn#4WOn{iBIM|MMb)6 z%Ua;s)A`&E3sg@)uXWo~ta`3F4$8Sb<-9OW(>lF(4CJk-ieHD@YZvu8CrV5ert4Kl z=IxQ=r#NB4wMp6~N-0edIW)$4%%Yo>~v7Nv+ zpU_DZn1gxjsJp#Uxyuw2?4bR*zEvO3o8xHmREX015LwqZ(Jk=#d`KrZqSGI!K8&t5M`Ah3>w_n4|snTh*#;Q;^ z#ICYdm)jWqtyl%6Y9+kb&Vjm1hO(!C$^@H)}JtaxxEJC0i*l<$Cl;jgxXs<+`-Jjq&}Fx$Pp|k50Y? zp9DFxmz8}$J%L!AzR-Usfw$Y8>1>FyD344(fimxjZCv+R{_g(z6#=BF#jLGbiG8OJ zKZJ*GA;}P>7mLB}IY|i1#0j)p`v&ja-+&{+z4ur4VX-qV=J|y7r>Nt4+r_F`gF;_> zX8lOR1RMqekNb4h(D{g<5-9i1w{n)qunZSZqn2u>q$uoCiZ=!oEXGNL%8^;8pv-U7 z$;1{e$s%I2a@{ri$?q#-Ai)NlKwWeHwVE19I$N0Xai6_U>o}W_sFZplYvxXD-1c9d zs|1u%0Tj?+Bwsa^K^Q@*_j-dyp)5}kktFkj7+3Yn=b&;eLwrB;Y|u?m1SrX!IS2bO z+S5w2CBgMX{o1ceXJ;)P<%3 z6d^%A0g&q*B`5-m-THK)*3FtskHts{^JD_hdKxfnL z>H`R$%xw?PGtr))_t|<9(LeqF@1QTE1=2p=4>bS}RH5BT=u*FrJ@vI#`$*8o5#X?B zB|&U`cyn|Ah5N^H`*=3@R!Yy{ByiE_otF+=9}g>Waq`_gHMwR#6tvxt z*4#`@aHAVTXDw&}_^QCw^yp26{pCyTe({ywidy?9x4oUs><=(>v&rF+#-8ULlSu|G zt&)$IGP|32BifwAD1xEpOpBKA6zqTs`HeSv+jcS4dO(I0*{+Uj(PJdNgg|5Pq-E!$2C(x-^Z@3UCNqZ za{3GVwsT0@RI1(}+t0(!@x6Qs>e+DdI1%P;E+>#nYoVb!mL9J|Fb*r2tU=U=(*EL{ zzr8-@U`oa}dZLv?8!Si0hPsdLl9iZ9jXeo7p3+M$w%_MA_OX5DeO>JN1Rl7bPsf+W zMGz{FL{>zX8JR9uj!eMy1j@uiK5NEB%l>-k>_8=5l;e{bV{~d#=Z&7(#AV1(KP=b2 z9#-<9Fh#Cy&V~Nznqyp#OLRUXIQ2?VG&h275~;KpMQpW24uDeuqX>WhX)ek-K={v% z{e8#Uf17nSIKeMHdF3IVbT*$# z<4HnCM^E;s?k8cp4o1T}R~iglI=Q)fGxAHBlqyAZ(Q;fwne5ya+3$eF(k6y*>DXLT zKTXW}!u&MPfBIAPck|gC1}{uN?N@$O7_+x=Vnm08X`uOU^8cVxQy^+Q2@AD#Eg697zwzOgyM{ob$g=*698=Kf=O zJew#@V^0A}5XCSCdZ|OCyS=gdLqbWtuPSco7+Hl4%d>oyFRrogt%}$UQCz>~#&xJx z3PqLllW_TE&OeFgBXc%43d5_GP!6(>F_wWp<+9HsjUk`M`yV?ekYuii0VGZ8cBSN} z)f?s7Yk@D3;DM9Wjd+bgy_vbzD%9uOyUf4kPK`?AeA{MqAoH!AY0Gt&PvY2loz3>b z)vl~66P3M(Db`Y365aD0ScRV2u4#6o^d;C-H z*Pq$K{i&DpVNSzxr6tB(RVQyfHHs~~QT^oZ@kbx7y}ZS}Q#W)=_I%%mEC!2y%oarI z(V3((egYV5*+PRO^H5K~ZrR7*b)SFcMSuOd{)Nx{6-VIt-F!C7%I&Gdyn*@Mm*T4@ zq6hQS?|MHBpk7)w$03UMK#QBd`6+Vx`FCQBTj`j?K(93BBJKmU>GksajAq+0Jsq7t ze-dNBgPP3@f6KN0i3j`*r{M2Ue?RkYq5oNxpU&oSDWgT8%|ZCK7d*Si%o7UNJ1dtj z7aY3a8?ZkW;-#p)@3-v`!S!c`FMV#252Njq7rp<@^8<1YA|7DAtmKpcpPApR@h^Pf z??nHm`gen8@Y&284IHx{f}C&8wycAq@7#8k+hOn$Do;^n9MemHt2f$wA#eG3|Ijbb zC2YSiQ&tQkC}v&!6T$Ce?)Ub2^pA1#ktyi*dH>4~^$&Lb-H4Kp^VtLkkhv*ZvWGH(D{Zm{_BrdooykZF!fMMj!c8T$+3OPGdws)^@L@JVbrlj-7{j4*!PV zcs?6no?fitnIKwz3o-XzK&MIUANd(RP_Dn>aw?|%I>mh1n=h53c45ld6zW8_gok?X o30@wfw7x(KKOn2|zHif|ysK{~%6ypl$!y1&BXd3ni2vpN0PcGTjQ{`u literal 0 HcmV?d00001 diff --git a/app-tv/src/main/res/mipmap-hdpi/purefin_logo_round.webp b/app-tv/src/main/res/mipmap-hdpi/purefin_logo_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..0783cc65f1f10a04795ed6d61ae2ed6e8dcd9d2d GIT binary patch literal 5888 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 literal 0 HcmV?d00001 diff --git a/app-tv/src/main/res/mipmap-mdpi/purefin_logo_foreground.webp b/app-tv/src/main/res/mipmap-mdpi/purefin_logo_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..327f617ad50ee8788ae18f3c036ff3cbe3472c8d GIT binary patch literal 5876 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 K90SC!vkd?)Y9xmM literal 0 HcmV?d00001 diff --git a/app-tv/src/main/res/mipmap-mdpi/purefin_logo_round.webp b/app-tv/src/main/res/mipmap-mdpi/purefin_logo_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..e9662eb3ebe525d5d236aa5a206f3f5724d8ffd0 GIT binary patch literal 3526 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 Ay8r+H literal 0 HcmV?d00001 diff --git a/app-tv/src/main/res/mipmap-xhdpi/purefin_logo.webp b/app-tv/src/main/res/mipmap-xhdpi/purefin_logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..b213fafc2864a1265c5af4b7e693c825124b17fd GIT binary patch literal 6208 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 literal 0 HcmV?d00001 diff --git a/app-tv/src/main/res/mipmap-xhdpi/purefin_logo_foreground.webp b/app-tv/src/main/res/mipmap-xhdpi/purefin_logo_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..96339598d8a7f463419fbd1477e93a1ef844b43b GIT binary patch literal 20342 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 literal 0 HcmV?d00001 diff --git a/app-tv/src/main/res/mipmap-xhdpi/purefin_logo_round.webp b/app-tv/src/main/res/mipmap-xhdpi/purefin_logo_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..014ecd5653e5e7eec4459d0e881561958fb4ae1b GIT binary patch literal 9066 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 literal 0 HcmV?d00001 diff --git a/app-tv/src/main/res/mipmap-xxhdpi/purefin_logo.webp b/app-tv/src/main/res/mipmap-xxhdpi/purefin_logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..3f8d24443aee8772390e64c2b9c971e176e5aeb2 GIT binary patch literal 11988 zcmV;_E-TSeNk&G@E&u>mMM6+kP&iD$E&u>8kH8}k35RXlND`E6)|>NA{{??{*Fi-8 zCxHJaaCzkg2@#T|+eMWkAS{(cf^<^MdTJ4>%Jd7*r@V34!Yx*{ zCB@EmrX+bYy4^a1)G7jAPu6;hU}h6i^zxVvlq;dBm9nh;z^ zvTa&@&1dEx(~H2i@!>FyBuCP_Wf+!W-g}dOR2RaB(Eka5-;yI=0PqK}&I!=~fCd1p z|48NIAE~H{1Bg^uk)^a%mddK=npeZG=2ifNh;{Cz_N>HRio50@2kH}LHyj|{JC}yl z+g9T{RhODYyXl{-GJNJ^`aIR2s;8RM_mpUm0p$D+A5-J$Yjz}LkLCOv{?DZt3q;<2 zI`+%)U2d0#fshyg;0Dl>$9-<^<7q1(iXQ;T4a8nt_d`Gu4FI^ozdcb9d3(c60AK(= zENB2Mk>eKpR2&N0wvm$ZXT9%^K}1Xdk40U%f8mexooZT>QwCNpv~iW{;N*mwBra^6 z0X!C70E&n_rYrxSB3t>*IdyQiNF!p)9a4w)x$lL$J7n(ezI%5jxVFEob2H@k09T@} zE^Lt0;Z);384gz-0C(wVxvq;#=8#bxpCYB}MAs$5IT`VdZj~kw8%a_mMIAF6aQ@r& z%rG+zx7xPl$^HJ{`~OLhQiiZ?(q|6zqjGkjV+)6t&fVP|K6&NX+IH;K^&+<2vC0tA zW(0Q9S%b*RIGie-jY-(HanAd`-!lQ4RBd}SYjz^Gy!X-oG#NED`!fc)mbW_^f60#E zLT#_&;UPK?YD+;u5{?9Mv^xy{EX8v{5b1x0fAY5;N}_sR^x zy&P9VNGN^+f#gP#97%GI<@7cB3wk6SawJKTl!zSm%MTSWghXOgI4W30lI)~k(gH5P z2bSXJ6Ywlx2}HyR!1n&1B1v*0BD1io8HRag8O_Yh^cJjpH+~U*0nE%y%e=$TG~HcY zoDlIg{yKVS8mD6ONtlkWG*YV+R%q2`ZmDdIQd`L5N6WoG+mbX;a;2xFTW+6Vb; zpP8XlhPgHK(I_>NCrOeV*|u#GEk~7hWB1OSO7kcpYmfuFsqG5do1} ze?av5`n-)bQU|=W`knZ*-$G8>3)>u(Ucn0R12yxIM)u4@BfImEH1Z)yBYX5vrJ~yG zGE{QRo!CBw>NT;ArUAm~dhIgT)PkZmkt>rFc^P601e6sdpql}Kl8hjMk)sSH5xz13 zzm15&kX3!@Dqv*xzXtxy|M~-uuVIKfP~UG<`yi-%!!i*l+|Ig@4XAmi*bL{K(6)Pc zka%!6QJkn?DRRzw4@Z543NE(5=6sz;VitVefyiDK>jt)39`+2a|Nr^}kI!k$RwsN$ zGgO=~-1z`xRR;9iS9n;0F$s^?P*QtEb|&Z+KmuN^jU*fnaJ!N!Ugw0QS%uU3loDux(-VB7Hk?;}3xvkJ|1l&`p8!U0b12-*u05_Mx zI1s}D>O)E%V6{7|hm7jGO8ZD5ypt3zn-Fu!_&PemLW}^#sB6>9VAlue{^W!O?>NQ; zs&a+etp3*QLc?ta_B?pKqJ@lmoM3v7hqW5|ZmsXtt{dH}1*Dc^ZZO7w2@8RH&J#Ge68Zmn~Z@9dOEiHBr2I!Na|SPq^9a>39^_trcRvm`V&ctc@x8lMKgBkVJzX>aaVP(XsyFyH|=`wbBVi2cEMHeB#02vo1EuPcik;!##p`Ahpc;Om9Avq?#m#-@9BJJ zo1L(@^+hYy6JZJ}dzj|^s<#wzx8BZ$SWwam&fy-f<$D1PQ{7B(`vR=ny_UOJJ_v60 z(rq{>bhIg;kR+%zm(BCFwymlmH&t&Z%Q{wO7Mm8awm3_^FH!YEB=>^Wyy!LHC&b=X z*xvG$PVOo_-tAalCAi^yN@{Ywm0_^zJ(gQI1H-;_5o>w)FqI~&NF~TXeQ)mG?t@WEaacFLbDe?WjCc7Q#D@jj z9gIFsSO1_MME&e-m-T4R{Y>(`UnTmSaJUd`KT-9R{hB2mRsHjQs3BeFm{+fBGpQ|o z&zFa&WKDI#Z~lYw;vW(%(59cYs1ek(wy6+B$#!3&IhOXtnnPVTJ-tjN`lXjfMEw%E zeIOi15af2Hy_k`%BBQ|)9~e6#xPiB34P?oe z@T0Q?Jk0l53DFNiM*@t_YLl?jzM#0{Mn&(C45xW}AQCcIuV62zBR2K2w#Q1KgH_xJ zCH{z7p<1*W{odZQ6+R|Y+XY#4L}W7$j(?$yq8f!66R_4?AaM?*ZZFFmGL(dBsKr&n zBXdYJNAojU%ke8J#B~^l`6ZJ zb_x74cw^pl2}F>qi5e~9MP#xX=Z$K=h-{G0Sy!y;B6mY^s3D`G!^pg`UjHzaSF5)r zf*xR4P0Wzu36c+}T782~7x|>B;zR^8?^NOu5%Ko&6NdDSU+P2(U^iXB8zu0kYx|&r zqTbI{3VxUGModMDM7lznyyBALL@aKNjLL! z3lWlqTgS7u2(rYZpy36Q$R7UxcinYbsM(Hx>ad&$?1?H-C!+YB#I>hQeR= zUS0%51fUY6h)Sy=c2MsMr?1+R(EH~G{e?K3mPh|4+(kw~1cL*cKN4bbPuGS0U2`(7 zteej_X5-3qO4KKi$8*X9UN2TmrCSA`@As`0AZp+$4h@UQ%PVOWHqmQ6QEy9B5S-G6m-A?iC3D( z@N=a?U?8?i^{XSUput`^hq@b&FwPDhCLeLlq9oBdP4anxjSx43#GdS*v;|Ooi@CXRdg5D^T>||os zPIU#Eq>H#?bV$8qjFtjSkqRrmObyHUZWLh!PXgVR3W7i_!2?P1k(_uFy&7W(>J6ao zDjrOz^aRn6p#g+|#s1L+w|R+`?IyE9m;9&H)FSv&gYrGpfO~5E@KyFlTzmSC`0Xd9 z#$8SK%0QJ|bc&;K$y=4!&NwTQ;JcZ%r<9!-E{t<^>t@rY^=k@;W z40AR){nWa$v1cGnlO@u~uC7MqZ+#zr=; zHXCv%7dEI6LkgmRDQE$HE4lO9;Z~mW9w+e)kJkb%{S-S~J~)&a*VCg?MT3D-GPtw` zt=U44!{nK*kC=LoH03e);+J3d`D>EPc!aKTUdH_l`(nVaZGI2)4d`k1l|vgk%xr^1 z2`W{UIUpNIj)Y7pN)#{#CZY@w*=A0q7_$Rct<4EiN+GEw$%C`Xt%etS4EYM(;%F4P zH?BXpC|vqv*A+*h$ghPGYq{7vd9m!5sM}wTWH4s(0bK?$0xL=iL}vN47%nmdCO}RE{QNd_ za&3-f>6!|lp1UWFQ7%vwx93`5DZsNjx+2uDv(!ZE~3b{|8d5xrB96!M`==of(3M=v?So1Zzh{D@2L zyiM5!R#*ZVga879C9I6<&&-io#jIf-Z~Wul@d5OS(r;q@pXe!cKj|M-`X|fy=x=)j zUZMYE?AI4cbvkIJ@PDwSu2b8}_@!*zVd29-1qe_CfQ@NEVCtlB&O-*_Zd_*#%^Axm zm{b6qmoGn0{D$v2{b_djSQuG{-|?QeKT}d#NCLPO1z6Vv7e@>r$Q;KS!}`THdi#8_ z?-ebD-yi4ig)Zo!`1dpTt45cs&-^F-fAGfnCguN^X3=p?$NB#+cii<_n`KvBRy5Rl zQ6W0LO==Pq47=(#(i9e?Qy}b+ak00AN&r$av-nCYXZE-)7rPccux^<|Meu8q zR6k0<82=d=AuY7TwKTASkYScFoOh{?0kv!308(? zIIL}2<|k}$O7;uIFBtKfSKq?5eh3x`;3yNP0ll@b_7SQCs_BO9krG@*U`xFoefArW1}neVgzFYnWTcH%=B z?~PA}ep!V-CI5E-9pDI6zA}j!@qKQvRQ4(NBy)R2j=>tM2tv@HC=G&%Brp&rU|8GB zgb+gsSr7cmkvu)BU8NPRIg=Q?#tE6Q(sahgOAmqww8S;05Du`O$5?S=+}r9$nW$0@ zfvW{>MvfGR$)_AD_SSgkE6@phT7lGR)nq1A{x>+{Xm_a?zvTPgc$YKTbBT9P@HNiFRF~tTd%MZcC=a$u=2=5nFI`uy<{!fi$9rtDZ0y; zE?+5NEtTr%Fq0Mp2_%R`WZFi=;}=V`Wq$&dF4|sXOJ;MmlUVHB?XT2ys1`t}0k!p^tu#wnkwX<#krXGy zGN#71=9Kb%2!c?Ql36Lu=i*o(2wFagjzm0Rz4R+wv7^mo0MV9UI)UHt9yP~;h6N$O zZ!(--iZ85(oDl?W>RpE1vZ2~f+K3e_jXY+VJ{`078^+WfsKtU`ZDLkFmIeF$YakIb!6rQbI3rU$sKyNcNhJ><&OIk`P zN1+f>GYKyi-`M(8y7d-#&5D1b)4_}c2%dL&GCD@vjDnj{S^5a?@=CnrCW}h$S08g^ zdwOlvv+{?u03K0A!BJW2x1hiACw_MM1L%10^~X^e5*K&|B! zK9`agciXr{D`3mdoIEvFb$lw}ttI&W<9opLl$@zWFMFoX*_{0S|Lf>Njkb~y4|b^N z8~)8eoVA{Ne^iyQO`+{0RSB&S=I9|s@W<^G%p$~Kq=;dfeLbH08Le zt`=C!K&@!rI?0F7+O+#JXr_fUm`DET1~XPI(OKb=$=td{I-l*_6-gz%$7ds7r=4qe zPd&afF;j`~p?LgnmQyDGP4J68({J6~ZadRnLje-if!;vXa9W)Ro@F460IQK{T0_~3 z#9|6rgDlrp@YwitR}v_MZwBDixh-p5`g&Y*p zEEb%7lS)EFC}QTN;|3;(v+4`92R&+4#Rb>EtBkPD#*sZ*_C)R31$?jrUeyl)cxSG= zoUTw9_k8CDz9w=V&h3(Pp93$ylvsbVUCKkTSkoD#m*=BhR`69-_OPNho5{TIK+qxEdKbRLzrBn38Pa zLMiYic*|#*0p_YGx3qQ`={;^`8Pwe~)q8zUlG>}}-<77+n#P9(W1st;5z+d7j?CXf z`QTj=gv_lG%9|jfEUK^jh@0Q=v)HB`R9;>eJoeDQKzJ?S z%w$kz`$hqh8%=g8kBpe}lK}u{(gm+#Cgfw4MRt&M^93`^ntAmxsXppZ%)bx6{T<4C zW%ew-dU1nB^_-Vb_R=(=!KcEdFBKSE8QsGPoXAcR*MXrCZDrF*5X9JHWJJI}$ZPhl zt{0wuqjT-lH*arxReF$-$HD6xrCF5grGJ!^3K~VF*E;pafl!sf=sf$Y%;r(J&|tC^A2Q z2+9PM78KHij0mGev{Y@8#UnG$2d+-uVf3rc|DM?;ck3Yw=IOD!-|?YQyAGx-5BbIDF*%7|llf>TQDVNAd%kSC z^7O%PJn<}5AGxvmwJZGdW4TmPC8H@sQps9#?*qi06)-eo$~~%^vUSp0^^hwu^PA7C`B>|NFA?4P zg&!YOFL)F@ps{oq6(XW=T|;$9aEcnB(A9V7JDfyrQ zo7L=1YtL+rAAfhfdicRGzl!nUXCm9rhxpqhfB%P-*3QR4gn&Zvs4xQR*Pw7@7av04 z_8fr2mEeK3Y8#p$N~3H4-(Q|q2C?cACW_!DGntSa-GO4jL^Q@tzL*wikt&Y+(2LJ{ zu{ep#S5IAv$kO#{-E`NkDO3tGu=@OHN=#dwot{#>IZkqA`B?D6gs3>rG~bS~ExzXY zU&${HQ|lClG@wiyMAHBun3Mrkc#%!5wFU#JPMe5z@-M;F?e1k)N81<+@Rb8D{KJ2E*ztq;P!hpS8BXIS(Np{G4vT{BS3@k}R|%zR z%eExt)_O@SVe3hZ_#*^wEDD>}GUx-?U?tR+(b`?cI%RWF{ce+ML)f%na+@Y3?1YL` z@UW-KRG)o~p?E7wHJ7i#&N5pxXyVe^yd&`{up3<-}QZ(Q(b@zP(PS zV%oae*nPDwssh@)oSfrqle&ksFZNGUv9QzmOB2f_q&>x=25+VBch9nCG!sY$Q*h&H zk%OmYV9O*(MM6M>KrDj{9}vt{8@`-hVh$x_&MNHSU)}mq(fkPx3aX(Uk2^o~u>` zH^b5ol>m>|6_GVUf>ILCPoq<=FT<-}x}Ry21H+ThWK z`W4FRk$t_U=z{)zX7=o6t1{;u&tdgBHlCE!go;&b2{lxrXy7q26Ie!7z0~&I(HVzw zai!Es85vDs#aunmhR(Auj`j$a5Cr%(2_ha-rZPI~1XjN1#rhMo^?A@_%&Z)suJl4J z3U0?J1Pvrxd%ympFPQn3!okJt1DcYkJmtE+uIK#hwpYy>QZ6$NuJl;Rz!DY|ADEG8 zw*e$awh>W$2nm@zVjs$)U@D{iI9k9Yn$()I09sGJs(5d-C~Ei{%S0y74`fV7<*>6{ z-0b5}6l(W{=PQaQkCd+0vXdkX=)q&R3Ke_EuWj$zDjIO>utY zBg2+DADB-B9z3#LzFmU=Xaa-}p+H6eg##rMs8u?B2c()HjHa5sfFXP>g^7IR45SLJ zD@GsHnIg1wEjHzxoxOD_-Ix>HVaro!H2uyuy=OS+P#{*f)rWrCns)7f`Onqtq=oQ| z`s#Q+gv)YE2SGUYfM!nJM?kM?sM5&>;NAi&E(E0Z$g)r^01|J}=5o+;3e6xC&DLX{ zQn`MIYR}-1Rndhjr|0hO5aw5>hRJv@*(X^kTDR%k!&{@*M2>BDS<{B&;tZXx1-7nQ zr0A}?Tu{JKh%}5S;xx3F5N%Qn6H0i}a`2WIo+P_QMhzo03-;D%3Oud?HxbieTw;Bg zH4PuqDZ_C6vL~l;QZp5_C;KYTK4(^0h{kiihg+sztIyTF*R#^)Sa)Wcf{I6+-*nA# zij_&9oYPH#a5ffdUjo4+YAwNeI!`;Z2uJ%4(q^b(XZ9!2!a7Y!<4ZtKn{W3UHa;D{ zN*FRXeGKbj7_D8!Ln$NH#9-aj%cW1J@!s~eooQ$4&cE;5;F6`A4@l|gxP2!o07^>N zfEMPq(LgjOp?Z8K-)XbsS)rcpy@@GtrX&R+%bsvo3h4;H51gO)*}c59esQT^w(BGD zApsrK=g^#ZY5<*n>>bNzUN7|cP}(o2+hzYyrJI`EvW>ow0_C3NWHCuwIww-M>vgQ| z9yI|1MK_8MDkIcbg5j`)0z^nQJ=3-!t>o1ruGL(DFtK$?77wJ5gc!}%TrtaL?PiT4 z4z=SX#3yTIJ8Ya80rB5x@`$?k-Q|8Lu6@aTD~E_Y)^ky1Y|YN#-_(z5O#jRgge9&l zcxW&^Js>m3G6Sa^C$e|!bLc#a_-D;5M0gKF-bYSEa}MCaJuS+D3bZqk|XJ5_RMf+RR-4v@}FvMxQ{Y&Z(_=oSGl!Ad6!9FmK;(Qtd z5NG2YP5F`m*wZ8|AouaINK**0T z=MX}C+J*z(eBXa2X*TWg_IfU#JuMXGkm1uLLA2l<(NJw$bt#8^I1L00yhfi9#hz>C z<(YqO5*frWpJ%Q(NtR5=0oLAm6>KU@d7=wWTQx*Ev&(9t<>(fZETa>tMyx?5k42c- zD29z%10yXepQE0RggG}Rat?d4iM2vIu6|xvTTGyBo*lWJJ}cHf>JSA{&3hS8#)=4dpO|r}Ml?)1 z2ge%5kH>=qTrq(pGld$g#uy%>>3sAgX$T_x#Ll|{T~gRiwOyB!aXh!+v5Cl$@uiP6 z?^YF!rKr@fd0ul~S2dS|h*Vpxno zYVcUfOHt>P^;I@O;;yrxVG;~ZI2xx3_`HVTJ94on zw72=;L{(4GqNGHN&q97ic+KUp($0J{>SFA#OX5Eq<+{v!l$%nid6?L+{JMuUX+miH zOt1A~xEq(v9%rAiGe&rje4YrgM5A++xRm?nqDefxw}POBej?8(H;%9hF&ygh2`eJ$ z>3pYY9+}G}g*SYA?*MwfDPXvNX@DL8gbNcshdj8lemx{ z!Z*t(_CXxAa1O)C=!A&N`8H~xMhp|-P|&`HdOrHd5AGgL^>k$zV7?aSnsS)v&{rBIqG>K-M|Y;tT(J*z1k5J+4l^7HdPigEY=v}yk#gi;YYkQ80ZEWki(pNXh9D?b|&*x;VJ(f!`;I?V{@RP9x_?5t_!chnY0F0QTi}7uMpvC`KwN` zKCNT$!6OC^4W#`vI}d2=@eV78G7nDbZO*S%4a-j!6n4uNA_$8{(2o4p+I*%)A=G1N zqi=t~vUu&U?1QOt1a4h}hBkB;b^mF&nJz0te6PlA`}Wh*)Y#W2D8Tx*`oIK%w&r^A z$tdUwT2+U7GqL}l|M!Cr2mAIXTBXApv^fgzd>*vYUNbln@ia0lYA>^N!)T|MZHlFo z4msi|Lz%2kE$FGtM>cU>qP|Cf9XUr@C~m`4Q@leQF0A#Hc)FG~k*#ecEMVNr%MTCZ z1WFX5i5mH}On8j|wAYb@)T#86ve%t5T&%RzNSSFyG0ipG_^V~?}BEvvwCK9q7_>N(VECJ zgL$k`hr{wvT4afUvX8?KE8${W!{17&9FvCMif%1vD+y)dOW?`tj3|I{>YD8W&LERf+b zj2rdmePG5OC6X1Md%@dDdmn^Zd;GlNQGm88iuWq#%seK}C(HJn;Yi9ry?-S4dp1a= zjwTX_*RLOiMkqP@Bv+32^0vl~ciG*wucE97uS^=3!5|kx1hO%|sJ+(npsR_9v}`qm zwH`0=cXPMMxV{f9`UmvM+I6`2M?Hv%beJPOD;;319SvecDo4oHB>ec(A33&#@2>B6 zX?;A_o#rvjw=(@Uz25AuXa7TBEV(z0AF&ODQN0~LkI^Sif=3Lj{IKZpu(i=5G$qy% z7?8DY(JzA0iHuBfSW6V3Xh^JulGc3a;k z7QoDH-p|y!u2U6qd<-AOQ76+>b*ZS2&A>cfd^N1em0UqB9;JN=!VmU!5>Nw?M18C7 zK85%Ko`v(+LgxZU7rgWcYIQfOepdf}#b>kb?^}env2M2R{5t!|lu`t|&QRa~ElHFQ zYIHh-xVngAk4cEVZHG#ut0%x5OFz!lRUZU-SZ$4k>%R_61Xhbl5L>5Yb@l5Sk$P#g0$jZp8huj`T;Ewsx0*pTXbCi~ zJec*~OMQhxau@c*M;k35c?jmsZrStM@%4<)>poTDAFc zIH-rU_wR#Ulm%|SHAU(k)fK3PNE2r12qDrwcT?-<_j}1RGD;*-GNbP;f;V}*xMB^U zc<~7Q)>%`5#|G=?*VjAdS;gvO;rj0Qq!OtJAwb^L{8ayBtErd8Pl+Y0?}jFAR=vT~ z*Y@eGblo9C{Cw^*{hgq1Hkb86Nin+icOxeeH!S z!f6;r9DHfK+AS>CpQhn&-7uu+!-OmfPit?ZqklGW&R3gG=jX2R@Tmutyx3lYtD(IT zS*sInR0s!C#v}rd?wv-+O9BDlg}XO;Ua^2R;a=?znh(eT&gBqXgW`-Q0Dl?|ueFHI zx-{Ch?6*3RK=BSy0OkaGP`QL4xEC&<*=ax{g6avxsngH%bk8!6^|9ZJXf{ldzLKpy z9eV^Ux;H0bz3)GOIjdd|E}#c1GbHd>X;K=E!%4|#$J9X=$YL_UrO)MuYEKxgJ_MF; zV(nybwv(Y*JAwqL+kf_}KF`~IRmdz?GE7~N4Q5ioSA}Jx7J$@3sOq9nd(-RalyYUe zx}0ZL^Pr9QeSiRg3-8yOpF_8V6i^f3=GuOO;XwcL`Oec0k>T-3Mgole9;LB`A!A#tFh#kWvPI}KECg2GU zB;TY%6FsvR69iXr5dA5yJ(H)l<#~BIeb({>%RDSt<-370M#rjXoj^~^Z8n4LIK57S z+-}o_3pP?0P*!z3dRO*d^2&0NrEmg~=KU*I_8o>v5W?HsY#R=1zzjGURsVhnS?(~; zoh(rEzF*IoUg}ixhtD;Z>fwXv>zbE9%nX4t=FX+5(d?JxCraKI?c7+qR;qniqn^ou?P<>#(vlYc)w(; zs@>@r@Wwl&ZXju^`-&b-ZInM!>FvDn{-FIK)dOT@sN=ux{#C;9y;(#CcP0}djPE4w zWYxy4TkVy^j)7cvrN@fAriV8#uX9_zy?rh2jXUi7o9s@cfc{pu2czgmS2f;gi%d0T zWIX&`fEdpI52jM3tJ8ne+YdlgJ(cxnUC`c_{&pSr${BI+e#5#?Agp#sE#XIK2V?!; zDZ6h?;O(|??`wm8>l}Dgi~e;upL8?NK(7#FuO^%`wi+nG+~fC|3tC<;F4b*R{o+)2 zzOm=)*4(9&@AGtmNfq8&1=R+Av+msB>bFGP8azXIOi%GrpZ`Uil`||I0ys~*>HZ>a ziO2G&YdG+u3qJra^cv?hEYEFO_e00C%o*_cDCu|6dHCn+c;j^UzNnrWOX@V2`ujWC z`Pe1CXo}e^&VwMMm^~KU8jETcYNAR)$ejNSn_FOWH@=}(w}hGj&O*?JZzfW4QlF#OZZ}-9jA&lMYS+3G)g{AUKyPyE>uaY5vaCimc^(P!@Tb*tBHW3W zvA)0jt%>q)7r#yCAIoD=@M}RR8i2nTzYA9t_Om>FQcgzBojl%LluuJhG9Vg6sknJt z6!?1U9ug+3+o4z6rR@M@_=~6^PAr#b)uge*di15zmO_P_7YE*4S(W83?i;b`Fa2Kg zySnSQ+5ThyJ$_#Q@5T7((`5WHmsC%U4qR3FL&k+{LxGg_8UMd=~|&0Ahf6Ao0b8RPpeyOQ2Ct64Xs;DIY z0Y5(je}&jX+JRUg?&kJ)7lH;%t2d=Y1K^$o{{0U8f0h@A+ymIz?e`3cimh6qqA{h< mvwfyC#E%*>WXO=%8z>r$MngpnNKsKyt$(3Hg=)9=a2ciFm0+#_ literal 0 HcmV?d00001 diff --git a/app-tv/src/main/res/mipmap-xxhdpi/purefin_logo_foreground.webp b/app-tv/src/main/res/mipmap-xxhdpi/purefin_logo_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..1858f16047b52f02fc6e7e24e1f5c938c94efece GIT binary patch literal 44628 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 literal 0 HcmV?d00001 diff --git a/app-tv/src/main/res/mipmap-xxhdpi/purefin_logo_round.webp b/app-tv/src/main/res/mipmap-xxhdpi/purefin_logo_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..a4eea09e5ea467679bca19e241094cbd5792724f GIT binary patch literal 16460 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

i;n~V8 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 pes9HlR~L;tYN1-8D<`j@R#v6FH|AObcr-6w6 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

AM`q*`vR#r9HM#oM2Q*R=-elf};O86Bhvfqru6A zBL9W?;S3arANvd=3 z5g3aG1X>JKkJ7!UNzEQn(sZL)Gh-{w&Vzs&e>(;wH%>)q0~392hFtDIFf=7_i5dVM z6{>ismH_GE_)->=Ps2-bMNUZzdnRqt0~egPV_e7%47Y^U6uzC6$M zTJ-P}AP5DB#OUuIIQWwvn9Ap=)M3!cU#{=-zk^o*9Wgb-sm$oS*$K<(-$fySQ8Fin zyw9VJMGk`=%2yISDzGHSJ|TiUzO(GUW3oJYEFc*&?m@vS1EFJVrdY%j=>TZ;<;zdC}a8RJ458Mel>hnX+AZXezeCmh$ zbvVK>ZT}%lF^=&9d06|APKYA>)E;yg6}KL%JdpPeKn=wG1Fa~{uo6-bRDUaL#IOIM zR4q)+_N_D7e$A%``tU&eH_AoVYiV{e?;I0z`3G(Qy%bqwkZ+CanBw}+zJoan$4^Z>wGS%U_(WSorK?h&sW3~x@&pxm6eCm>pdp)l7h!%6bvnvhOcodh*r zQqK=;oGuHe%yerQ$W?=Z;stk(FIlfXkG8Bhvw5Fa9;md(i}nuqR16>QdsxNleKR<% z$m>}qg)p3^J2i9nBW#DvW;@x*VQc?YFuTUV@aEG&tVSEA|NnSK2o(-|D3>UV@}N_2 zwLI?(0C#;n{7Vy%ihpTd@FeTwF<)@@4)!>~xqrEr@kloo)8-WWce326$aoT)kg*sH z0ZCCY-eYmBGR_YaweCgFfH+nAga1Hao%!-;m1?>914QXd-QZ>G>Z0~|#ee$gtH0Yh zUmbdP1L1+Rj3UbA3Ra_9^oP^icp(H)=O6dxZZLf~%b&))5?A{N<`J2i&9KDjw1#`) zQ~hfHi?_!S599SgK1aGVP9KY@zj%D(Jv;crti1LRUWM@1(g5FnHRjRh#iVogE&iT< zDAnVKmG%Q<`s~ZYM8pgrEcx^Q*5|VjPtW@?@o5D!KE1ooycc)qC_L;GtQl4jirqh< z?12b?ho>@BF8F3!IyRLol znHX4^N}Js^JAixbUoLdyA19shHjV8u*lG1?$M~zAGa;=ae45}r-n^%mEI3bNE(ieW zqhF%Djz#QcVmbJa@7K9d&aWQmES~k_2WZ?6mO&09%X!EE@)cz47ubRn zIK$ebWBI$`|Cg?9tr^qt(LPcL!+(^lmo0R@y90Yb;{tlFOFwq$ULAhQ$wn%R%P4>^ zG_CZaC2vbjC=s9y`kJ8NTOxROS;crmAa!Pp E0EVHTLI3~& literal 0 HcmV?d00001 diff --git a/app-tv/src/main/res/mipmap-xxxhdpi/purefin_logo_round.webp b/app-tv/src/main/res/mipmap-xxxhdpi/purefin_logo_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..4afc8f8fea7fae10d4a0e010ed495331a25becf7 GIT binary patch literal 25956 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 literal 0 HcmV?d00001 diff --git a/app-tv/src/main/res/values/strings.xml b/app-tv/src/main/res/values/strings.xml new file mode 100644 index 0000000..b6076e1 --- /dev/null +++ b/app-tv/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Purefin + \ No newline at end of file diff --git a/app-tv/src/main/res/values/themes.xml b/app-tv/src/main/res/values/themes.xml new file mode 100644 index 0000000..55f99d0 --- /dev/null +++ b/app-tv/src/main/res/values/themes.xml @@ -0,0 +1,5 @@ + + + +