diff --git a/.idea/deviceManager.xml b/.idea/deviceManager.xml index 91f95584dd..eebfe8e204 100644 --- a/.idea/deviceManager.xml +++ b/.idea/deviceManager.xml @@ -5,7 +5,7 @@ diff --git a/app/src/main/java/com/theveloper/pixelplay/presentation/components/UnifiedPlayerSheetLayers.kt b/app/src/main/java/com/theveloper/pixelplay/presentation/components/UnifiedPlayerSheetLayers.kt index 2aed352222..336a74c53c 100644 --- a/app/src/main/java/com/theveloper/pixelplay/presentation/components/UnifiedPlayerSheetLayers.kt +++ b/app/src/main/java/com/theveloper/pixelplay/presentation/components/UnifiedPlayerSheetLayers.kt @@ -25,8 +25,6 @@ import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.layout.layout import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.IntOffset -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.lerp import androidx.compose.ui.util.lerp import androidx.compose.ui.zIndex import androidx.lifecycle.compose.collectAsStateWithLifecycle @@ -45,7 +43,6 @@ import com.theveloper.pixelplay.presentation.viewmodel.StablePlayerState internal fun BoxScope.UnifiedPlayerMiniAndFullLayers( currentSong: Song?, miniPlayerScheme: ColorScheme?, - overallSheetTopCornerRadiusProvider: () -> Dp, infrequentPlayerState: StablePlayerState, isCastConnecting: Boolean, isPreparingPlayback: Boolean, @@ -69,7 +66,8 @@ internal fun BoxScope.UnifiedPlayerMiniAndFullLayers( onQueueDragStart: () -> Unit, onQueueDrag: (Float) -> Unit, onQueueRelease: (Float, Float) -> Unit, - onShowCastClicked: () -> Unit + onShowCastClicked: () -> Unit, + onToggleVinylPlayer: () -> Unit ) { currentSong?.let { currentSongNonNull -> miniPlayerScheme?.let { readyScheme -> @@ -243,7 +241,9 @@ internal fun BoxScope.UnifiedPlayerMiniAndFullLayers( lyricsProvider = lyricsProvider, isCastConnecting = isCastConnecting, isFavoriteProvider = isFavoriteProvider, + playerAreaBackground = albumColorScheme.background, onPlayPause = onPlayPause, + onToggleVinylPlayer = onToggleVinylPlayer, onSeek = onSeek, onNext = onNext, onPrevious = onPrevious, @@ -340,11 +340,13 @@ internal fun UnifiedPlayerPrewarmLayer( lyricsProvider = lyricsProvider, isCastConnecting = isCastConnecting, isFavoriteProvider = isFavoriteProvider, + playerAreaBackground = albumColorScheme.background, onShowQueueClicked = onShowQueueClicked, onQueueDragStart = onQueueDragStart, onQueueDrag = onQueueDrag, onQueueRelease = onQueueRelease, onPlayPause = onPlayPause, + onToggleVinylPlayer = {}, onSeek = onSeek, onNext = onNext, onPrevious = onPrevious, diff --git a/app/src/main/java/com/theveloper/pixelplay/presentation/components/UnifiedPlayerSheetV2.kt b/app/src/main/java/com/theveloper/pixelplay/presentation/components/UnifiedPlayerSheetV2.kt index d692ed9fd8..4d7adb4024 100644 --- a/app/src/main/java/com/theveloper/pixelplay/presentation/components/UnifiedPlayerSheetV2.kt +++ b/app/src/main/java/com/theveloper/pixelplay/presentation/components/UnifiedPlayerSheetV2.kt @@ -748,7 +748,6 @@ fun UnifiedPlayerSheetV2( UnifiedPlayerMiniAndFullLayers( currentSong = infrequentPlayerState.currentSong, miniPlayerScheme = miniPlayerScheme, - overallSheetTopCornerRadiusProvider = overallSheetTopCornerRadiusProvider, infrequentPlayerState = infrequentPlayerState, isCastConnecting = isCastConnecting, isPreparingPlayback = isPreparingPlayback, @@ -772,7 +771,10 @@ fun UnifiedPlayerSheetV2( onQueueDragStart = sheetActionHandlers.beginQueueDrag, onQueueDrag = sheetActionHandlers.dragQueueBy, onQueueRelease = sheetActionHandlers.endQueueDrag, - onShowCastClicked = castSheetState.openCastSheet + onShowCastClicked = castSheetState.openCastSheet, + onToggleVinylPlayer = { + playerViewModel.toggleVinylPlayer() + } ) } } diff --git a/app/src/main/java/com/theveloper/pixelplay/presentation/components/VinylPlayerLayout.kt b/app/src/main/java/com/theveloper/pixelplay/presentation/components/VinylPlayerLayout.kt new file mode 100644 index 0000000000..9ebd2ef25f --- /dev/null +++ b/app/src/main/java/com/theveloper/pixelplay/presentation/components/VinylPlayerLayout.kt @@ -0,0 +1,189 @@ +package com.theveloper.pixelplay.presentation.components + +import androidx.compose.animation.core.* +import androidx.compose.foundation.Canvas +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.* +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.unit.dp +import com.theveloper.pixelplay.R + +@Composable +fun VinylPlayerLayout( + modifier: Modifier = Modifier, + albumArtUrl: String?, + isPlaying: Boolean, + backgroundColor: Color = Color.Black, + rotationSpeed: Int = 15000 +) { + val infiniteTransition = rememberInfiniteTransition(label = "vinyl_rotation") + val rotation by infiniteTransition.animateFloat( + initialValue = 0f, + targetValue = 360f, + animationSpec = infiniteRepeatable( + animation = tween(rotationSpeed, easing = LinearEasing), + repeatMode = RepeatMode.Restart + ), + label = "rotation" + ) + + val animatedRotation = if (isPlaying) rotation else 0f + + // 1. Determine Vinyl Asset based on background color with Debounce + // This prevents the vinyl from flashing intermediate colors (like brown) while + // the background color is smoothly animating between songs. + var vinylAsset by remember { mutableStateOf(getVinylAssetForColor(backgroundColor)) } + + LaunchedEffect(backgroundColor) { + kotlinx.coroutines.delay(150) // Wait for animation to settle + vinylAsset = getVinylAssetForColor(backgroundColor) + } + + Box( + modifier = modifier.aspectRatio(1f), + contentAlignment = Alignment.Center + ) { + // 3. The Vinyl Disc (Rotating) + Box( + modifier = Modifier + .fillMaxSize(0.95f) + .clip(CircleShape) + .graphicsLayer { rotationZ = animatedRotation } + ) { + // Main Vinyl Disc Image (Decoded on background thread to prevent jitter) + coil.compose.AsyncImage( + model = coil.request.ImageRequest.Builder(androidx.compose.ui.platform.LocalContext.current) + .data(vinylAsset) + .build(), + contentDescription = null, + contentScale = androidx.compose.ui.layout.ContentScale.Crop, + modifier = Modifier + .fillMaxSize() + .graphicsLayer { + scaleX = 1.08f + scaleY = 1.08f + } + ) + + // 4. Song Cover in the Middle + Box( + modifier = Modifier + .fillMaxSize(0.42f) + .align(Alignment.Center) + .clip(CircleShape) + ) { + SmartImage( + model = albumArtUrl, + contentDescription = null, + contentScale = ContentScale.Crop, + modifier = Modifier.fillMaxSize() + ) + } + + // 5. Center Pin Hole + Box( + modifier = Modifier + .size(6.dp) + .align(Alignment.Center) + .clip(CircleShape) + .background(Color(0xFF111111)) + ) + } + + // 6. Rainbow Glass Shine Overlay (Iphone Glassmorphism style) + Canvas(modifier = Modifier.fillMaxSize(0.95f)) { + val center = Offset(size.width / 2, size.height / 2) + val radius = size.width / 2 + + // Static "Rainbow" shine brush + val rainbowBrush = Brush.sweepGradient( + 0.0f to Color.Red.copy(alpha = 0.05f), + 0.2f to Color.Yellow.copy(alpha = 0.05f), + 0.4f to Color.Green.copy(alpha = 0.05f), + 0.6f to Color.Cyan.copy(alpha = 0.05f), + 0.8f to Color.Blue.copy(alpha = 0.05f), + 1.0f to Color.Red.copy(alpha = 0.05f), + center = center + ) + + drawCircle( + brush = rainbowBrush, + radius = radius, + center = center, + blendMode = BlendMode.Screen + ) + + // Strong Glossy Reflection + drawArc( + brush = Brush.linearGradient( + colors = listOf(Color.White.copy(alpha = 0.15f), Color.Transparent, Color.White.copy(alpha = 0.05f)), + start = Offset(0f, 0f), + end = Offset(size.width, size.height) + ), + startAngle = -45f, + sweepAngle = 90f, + useCenter = true, + size = Size(size.width, size.height), + topLeft = Offset.Zero + ) + } + } +} + +/** + * Intelligent Selection of Vinyl Asset: + * Based on new naming: black, blue, light_blue, maroon_red, orange, pink. + */ +private fun getVinylAssetForColor(color: Color): Int { + val hsv = FloatArray(3) + android.graphics.Color.colorToHSV(color.toArgb(), hsv) + + val hue = hsv[0] + val saturation = hsv[1] + val value = hsv[2] + + // If the color is basically grayscale + if (saturation < 0.1f) { + return if (value >= 0.8f) R.drawable.vinyl_white else R.drawable.vinyl_black + } + + return when { + // Red / Maroon shades + hue > 330f || hue < 20f -> R.drawable.vinyl_maroon_red + + // Brown shades (dark orange) + hue in 20.0f..45.0f && value < 0.5f -> R.drawable.vinyl_brown + + // Orange shades + hue in 20.0f..45.0f -> R.drawable.vinyl_orange + + // Yellow shades + hue in 45.0f..70.0f -> R.drawable.vinyl_yellow + + // Green shades (Using rainbow for green since we lack a green vinyl) + hue in 70.0f..160.0f -> R.drawable.vinyl_rainbow + + // Light Blue / Cyan shades (Using white vinyl) + hue in 160.0f..200.0f -> R.drawable.vinyl_white + + // Blue shades + hue in 200.0f..260.0f -> R.drawable.vinyl_blue + + // Purple shades + hue in 260.0f..290.0f -> R.drawable.vinyl_purple + + // Pink shades + hue in 290.0f..330.0f -> R.drawable.vinyl_pink + + // Fallback + else -> R.drawable.vinyl_black + } +} diff --git a/app/src/main/java/com/theveloper/pixelplay/presentation/components/player/FullPlayerContent.kt b/app/src/main/java/com/theveloper/pixelplay/presentation/components/player/FullPlayerContent.kt index 8a30f6f41d..f04e1162dc 100644 --- a/app/src/main/java/com/theveloper/pixelplay/presentation/components/player/FullPlayerContent.kt +++ b/app/src/main/java/com/theveloper/pixelplay/presentation/components/player/FullPlayerContent.kt @@ -204,6 +204,7 @@ fun FullPlayerContent( loadingTweaks: FullPlayerLoadingTweaks, isSheetDragGestureActive: Boolean = false, playerViewModel: PlayerViewModel, // For stable state like totalDuration and lyrics + playerAreaBackground: Color = Color.Black, // State Providers currentPositionProvider: () -> Long, isPlayingProvider: () -> Boolean, @@ -217,6 +218,7 @@ fun FullPlayerContent( isCastConnecting: Boolean = false, // Event Handlers onPlayPause: () -> Unit, + onToggleVinylPlayer: () -> Unit, onSeek: (Long) -> Unit, onNext: () -> Unit, onPrevious: () -> Unit, @@ -517,6 +519,8 @@ fun FullPlayerContent( onAlbumClick = { albumSong -> playerViewModel.triggerAlbumNavigationFromPlayer(albumSong.albumId) }, + playerViewModel = playerViewModel, + playerAreaBackground = playerAreaBackground, modifier = modifier ) } @@ -755,6 +759,31 @@ fun FullPlayerContent( horizontalArrangement = Arrangement.spacedBy(6.dp), verticalAlignment = Alignment.CenterVertically ) { + // Vinyl Player Button + Box( + modifier = Modifier + .size(height = 42.dp, width = 50.dp) + .clip( + RoundedCornerShape( + topStart = 50.dp, + topEnd = 6.dp, + bottomStart = 50.dp, + bottomEnd = 6.dp + ) + ) + .background(playerOnAccentColor.copy(alpha = 0.7f)) + .clickable { + onToggleVinylPlayer() + }, + contentAlignment = Alignment.Center + ) { + Icon( + painter = painterResource(R.drawable.rounded_album_24), + contentDescription = "Vinyl Player", + tint = playerAccentColor + ) + } + val showCastLabel = isCastConnecting || (isRemotePlaybackActive && selectedRouteName != null) val isBluetoothActive = isBluetoothEnabled && !bluetoothName.isNullOrEmpty() && !isRemotePlaybackActive && !isCastConnecting @@ -765,16 +794,10 @@ fun FullPlayerContent( } val castCornersExpanded = 50.dp val castCornersCompact = 6.dp - val castTopStart = castCornersExpanded - val castTopEnd by animateDpAsState( - targetValue = if (showCastLabel) castCornersExpanded else castCornersCompact, - animationSpec = spring(dampingRatio = Spring.DampingRatioMediumBouncy, stiffness = Spring.StiffnessLow) - ) - val castBottomStart = castCornersExpanded - val castBottomEnd by animateDpAsState( - targetValue = if (showCastLabel) castCornersExpanded else castCornersCompact, - animationSpec = spring(dampingRatio = Spring.DampingRatioMediumBouncy, stiffness = Spring.StiffnessLow) - ) + val castTopStart = castCornersCompact + val castTopEnd = castCornersCompact + val castBottomStart = castCornersCompact + val castBottomEnd = castCornersCompact val castContainerColor = playerOnAccentColor.copy(alpha = 0.7f) Box( modifier = Modifier @@ -1018,6 +1041,8 @@ private fun FullPlayerAlbumCoverSection( requestedScrollIndex: Int?, onSongSelected: (Song, Int) -> Unit, onAlbumClick: (Song) -> Unit, + playerViewModel: PlayerViewModel, + playerAreaBackground: Color, modifier: Modifier = Modifier ) { val shouldDelay = loadingTweaks.delayAll || loadingTweaks.delayAlbumCarousel @@ -1081,27 +1106,44 @@ private fun FullPlayerAlbumCoverSection( } } ) { - AlbumCarouselSection( - currentSong = song, - queue = currentPlaybackQueue, - expansionFraction = 1f, - currentMediaItemIndex = currentMediaItemIndex, - requestedScrollIndex = requestedScrollIndex, - onSongSelected = { newSong, index -> - if (newSong.id != song.id || index != currentMediaItemIndex) { - onSongSelected(newSong, index) - } - }, - onAlbumClick = onAlbumClick, - carouselStyle = carouselStyle, - modifier = Modifier - .height(carouselHeight) - .graphicsLayer { - scaleX = albumArtScale - scaleY = albumArtScale + val showVinylPlayer by playerViewModel.showVinylPlayer.collectAsStateWithLifecycle() + + if (showVinylPlayer) { + com.theveloper.pixelplay.presentation.components.VinylPlayerLayout( + modifier = Modifier + .height(carouselHeight) + .fillMaxWidth() + .graphicsLayer { + scaleX = albumArtScale + scaleY = albumArtScale + }, + albumArtUrl = song.albumArtUriString, + isPlaying = isPlayingProvider(), + backgroundColor = playerAreaBackground + ) + } else { + AlbumCarouselSection( + currentSong = song, + queue = currentPlaybackQueue, + expansionFraction = 1f, + currentMediaItemIndex = currentMediaItemIndex, + requestedScrollIndex = requestedScrollIndex, + onSongSelected = { newSong, index -> + if (newSong.id != song.id || index != currentMediaItemIndex) { + onSongSelected(newSong, index) + } }, - albumArtQuality = albumArtQuality - ) + onAlbumClick = onAlbumClick, + carouselStyle = carouselStyle, + modifier = Modifier + .height(carouselHeight) + .graphicsLayer { + scaleX = albumArtScale + scaleY = albumArtScale + }, + albumArtQuality = albumArtQuality + ) + } } } } @@ -1546,6 +1588,7 @@ private fun SongMetadataDisplaySection( horizontalArrangement = Arrangement.spacedBy(6.dp), verticalAlignment = Alignment.CenterVertically ) { + // Vinyl Player Button (Left part of the segment) Box( modifier = Modifier .size(height = 42.dp, width = 50.dp) @@ -1558,6 +1601,22 @@ private fun SongMetadataDisplaySection( ) ) .background(chipColor) + .clickable { playerViewModel.toggleVinylPlayer() }, + contentAlignment = Alignment.Center + ) { + Icon( + painter = painterResource(R.drawable.rounded_album_24), + contentDescription = "Vinyl Player", + tint = chipContentColor + ) + } + + // Lyrics Button (Middle part of the segment) + Box( + modifier = Modifier + .size(height = 42.dp, width = 50.dp) + .clip(RoundedCornerShape(6.dp)) + .background(chipColor) .clickable { onClickLyrics() }, contentAlignment = Alignment.Center ) { @@ -1567,6 +1626,8 @@ private fun SongMetadataDisplaySection( tint = chipContentColor ) } + + // Queue Button (Right part of the segment) Box( modifier = Modifier .size(height = 42.dp, width = 50.dp) diff --git a/app/src/main/java/com/theveloper/pixelplay/presentation/viewmodel/PlayerViewModel.kt b/app/src/main/java/com/theveloper/pixelplay/presentation/viewmodel/PlayerViewModel.kt index 4ddadbedea..0b2bf10d00 100644 --- a/app/src/main/java/com/theveloper/pixelplay/presentation/viewmodel/PlayerViewModel.kt +++ b/app/src/main/java/com/theveloper/pixelplay/presentation/viewmodel/PlayerViewModel.kt @@ -215,6 +215,7 @@ class PlayerViewModel @Inject constructor( val playlistSelectionStateHolder: PlaylistSelectionStateHolder, private val playbackDispatchStateHolder: PlaybackDispatchStateHolder, private val mediaControllerSyncStateHolder: MediaControllerSyncStateHolder, + private val vinylStateHolder: VinylStateHolder, private val sessionToken: SessionToken, private val mediaControllerFactory: com.theveloper.pixelplay.data.media.MediaControllerFactory ) : ViewModel() { @@ -437,6 +438,12 @@ class PlayerViewModel @Inject constructor( _isMiniPlayerDismissing.value = dismissing } + val showVinylPlayer: StateFlow = vinylStateHolder.showVinylPlayer + + fun toggleVinylPlayer() { + vinylStateHolder.toggleVinylPlayer() + } + // AI Ecosystem: States delegated to AiStateHolder for centralized management val showAiPlaylistSheet: StateFlow = aiStateHolder.showAiPlaylistSheet val isGeneratingAiPlaylist: StateFlow = aiStateHolder.isGeneratingAiPlaylist diff --git a/app/src/main/java/com/theveloper/pixelplay/presentation/viewmodel/VinylStateHolder.kt b/app/src/main/java/com/theveloper/pixelplay/presentation/viewmodel/VinylStateHolder.kt new file mode 100644 index 0000000000..4170862226 --- /dev/null +++ b/app/src/main/java/com/theveloper/pixelplay/presentation/viewmodel/VinylStateHolder.kt @@ -0,0 +1,21 @@ +package com.theveloper.pixelplay.presentation.viewmodel + +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class VinylStateHolder @Inject constructor() { + private val _showVinylPlayer = MutableStateFlow(false) + val showVinylPlayer: StateFlow = _showVinylPlayer.asStateFlow() + + fun toggleVinylPlayer() { + _showVinylPlayer.value = !_showVinylPlayer.value + } + + fun setShowVinylPlayer(show: Boolean) { + _showVinylPlayer.value = show + } +} diff --git a/app/src/main/res/drawable/smith_record.png b/app/src/main/res/drawable/smith_record.png new file mode 100644 index 0000000000..45a2ce0763 Binary files /dev/null and b/app/src/main/res/drawable/smith_record.png differ diff --git a/app/src/main/res/drawable/vinyl_black.png b/app/src/main/res/drawable/vinyl_black.png new file mode 100644 index 0000000000..455e7c12ff Binary files /dev/null and b/app/src/main/res/drawable/vinyl_black.png differ diff --git a/app/src/main/res/drawable/vinyl_blue.png b/app/src/main/res/drawable/vinyl_blue.png new file mode 100644 index 0000000000..3305a88938 Binary files /dev/null and b/app/src/main/res/drawable/vinyl_blue.png differ diff --git a/app/src/main/res/drawable/vinyl_brown.png b/app/src/main/res/drawable/vinyl_brown.png new file mode 100644 index 0000000000..c4fd4607e2 Binary files /dev/null and b/app/src/main/res/drawable/vinyl_brown.png differ diff --git a/app/src/main/res/drawable/vinyl_disc.png b/app/src/main/res/drawable/vinyl_disc.png new file mode 100644 index 0000000000..2f731a94a2 --- /dev/null +++ b/app/src/main/res/drawable/vinyl_disc.png @@ -0,0 +1,176 @@ +Official PSDs - Your FREE PSD Image Community!

Browse Images

Browse or search through images.
Safe Mode is enabled!  —  Login to view all images!
Newest
Trending
Oldest
Name
Rating
Random
Basic Search
  • Basic Search
  • Advance Search
Swedish Casinos

Our Partners

Testarna.seIndiafantasy.comGratisVardagGamble.xyzHityah.com
page-error.action-close
diff --git a/app/src/main/res/drawable/vinyl_light_blue.png b/app/src/main/res/drawable/vinyl_light_blue.png new file mode 100644 index 0000000000..21b407032e Binary files /dev/null and b/app/src/main/res/drawable/vinyl_light_blue.png differ diff --git a/app/src/main/res/drawable/vinyl_maroon.png b/app/src/main/res/drawable/vinyl_maroon.png new file mode 100644 index 0000000000..c1542a75eb Binary files /dev/null and b/app/src/main/res/drawable/vinyl_maroon.png differ diff --git a/app/src/main/res/drawable/vinyl_maroon_red.png b/app/src/main/res/drawable/vinyl_maroon_red.png new file mode 100644 index 0000000000..70ba1af5ab Binary files /dev/null and b/app/src/main/res/drawable/vinyl_maroon_red.png differ diff --git a/app/src/main/res/drawable/vinyl_orange.png b/app/src/main/res/drawable/vinyl_orange.png new file mode 100644 index 0000000000..9bf54edb0c Binary files /dev/null and b/app/src/main/res/drawable/vinyl_orange.png differ diff --git a/app/src/main/res/drawable/vinyl_pink.png b/app/src/main/res/drawable/vinyl_pink.png new file mode 100644 index 0000000000..15b44c93c1 Binary files /dev/null and b/app/src/main/res/drawable/vinyl_pink.png differ diff --git a/app/src/main/res/drawable/vinyl_purple.png b/app/src/main/res/drawable/vinyl_purple.png new file mode 100644 index 0000000000..71914a1619 Binary files /dev/null and b/app/src/main/res/drawable/vinyl_purple.png differ diff --git a/app/src/main/res/drawable/vinyl_rainbow.png b/app/src/main/res/drawable/vinyl_rainbow.png new file mode 100644 index 0000000000..ff96863f26 Binary files /dev/null and b/app/src/main/res/drawable/vinyl_rainbow.png differ diff --git a/app/src/main/res/drawable/vinyl_tonearm.png b/app/src/main/res/drawable/vinyl_tonearm.png new file mode 100644 index 0000000000..84232dc5d7 --- /dev/null +++ b/app/src/main/res/drawable/vinyl_tonearm.png @@ -0,0 +1,176 @@ +Official PSDs - Your FREE PSD Image Community!

Browse Images

Browse or search through images.
Safe Mode is enabled!  —  Login to view all images!
Newest
Trending
Oldest
Name
Rating
Random
Basic Search
  • Basic Search
  • Advance Search
Swedish Casinos

Our Partners

Testarna.seIndiafantasy.comGratisVardagGamble.xyzHityah.com
page-error.action-close
diff --git a/app/src/main/res/drawable/vinyl_white.png b/app/src/main/res/drawable/vinyl_white.png new file mode 100644 index 0000000000..7c42bcb2ab Binary files /dev/null and b/app/src/main/res/drawable/vinyl_white.png differ diff --git a/app/src/main/res/drawable/vinyl_yellow.png b/app/src/main/res/drawable/vinyl_yellow.png new file mode 100644 index 0000000000..aa21068536 Binary files /dev/null and b/app/src/main/res/drawable/vinyl_yellow.png differ diff --git a/assets/record/black.png b/assets/record/black.png new file mode 100644 index 0000000000..bf94f29265 Binary files /dev/null and b/assets/record/black.png differ diff --git a/assets/record/blue.png b/assets/record/blue.png new file mode 100644 index 0000000000..45a2ce0763 Binary files /dev/null and b/assets/record/blue.png differ diff --git a/assets/record/brRecord.png b/assets/record/brRecord.png new file mode 100644 index 0000000000..9fbe08a387 Binary files /dev/null and b/assets/record/brRecord.png differ diff --git a/assets/record/light_blue.png b/assets/record/light_blue.png new file mode 100644 index 0000000000..95ed29ee92 Binary files /dev/null and b/assets/record/light_blue.png differ diff --git a/assets/record/maroon_red.png b/assets/record/maroon_red.png new file mode 100644 index 0000000000..c1542a75eb Binary files /dev/null and b/assets/record/maroon_red.png differ diff --git a/assets/record/null.png b/assets/record/null.png new file mode 100644 index 0000000000..6a03b7fabe Binary files /dev/null and b/assets/record/null.png differ diff --git a/assets/record/orange.png b/assets/record/orange.png new file mode 100644 index 0000000000..3855f443b1 Binary files /dev/null and b/assets/record/orange.png differ diff --git a/assets/record/pink.png b/assets/record/pink.png new file mode 100644 index 0000000000..71914a1619 Binary files /dev/null and b/assets/record/pink.png differ diff --git a/assets/record/rainbow.png b/assets/record/rainbow.png new file mode 100644 index 0000000000..ad5eb3bacc Binary files /dev/null and b/assets/record/rainbow.png differ diff --git a/assets/record/white.png b/assets/record/white.png new file mode 100644 index 0000000000..06794eb5b1 Binary files /dev/null and b/assets/record/white.png differ diff --git a/assets/record/yello.png b/assets/record/yello.png new file mode 100644 index 0000000000..607e7925d4 Binary files /dev/null and b/assets/record/yello.png differ diff --git a/assets/screenshot1.jpg b/assets/screenshot1.jpg deleted file mode 100644 index b93793d332..0000000000 Binary files a/assets/screenshot1.jpg and /dev/null differ diff --git a/assets/screenshot2.jpg b/assets/screenshot2.jpg deleted file mode 100644 index 557315f32c..0000000000 Binary files a/assets/screenshot2.jpg and /dev/null differ diff --git a/assets/screenshot3.jpg b/assets/screenshot3.jpg deleted file mode 100644 index 1bdd9e754c..0000000000 Binary files a/assets/screenshot3.jpg and /dev/null differ diff --git a/assets/screenshot4.jpg b/assets/screenshot4.jpg deleted file mode 100644 index d362b85c1f..0000000000 Binary files a/assets/screenshot4.jpg and /dev/null differ