Перевод

Мелкие шайтанские фокусы
This commit is contained in:
2023-06-24 01:49:30 +05:00
parent 83fad60483
commit 0e0cd3ea07
246 changed files with 1424 additions and 1420 deletions

View File

@@ -59,7 +59,7 @@ body:
If your bug includes a crash, please use `adb logcat` or other ways to provide logs. If your bug includes a crash, please use `adb logcat` or other ways to provide logs.
- type: input - type: input
id: vimusic-version id: muza-version
attributes: attributes:
label: ViMusic version label: ViMusic version
placeholder: | placeholder: |

View File

@@ -8,7 +8,7 @@ android {
compileSdk = 33 compileSdk = 33
defaultConfig { defaultConfig {
applicationId = "it.vfsfitvnm.vimusic" applicationId = "it.hamy.muza"
minSdk = 21 minSdk = 21
targetSdk = 33 targetSdk = 33
versionCode = 20 versionCode = 20
@@ -22,7 +22,7 @@ android {
} }
} }
namespace = "it.vfsfitvnm.vimusic" namespace = "it.hamy.muza"
buildTypes { buildTypes {
debug { debug {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic package it.hamy.muza
import android.content.ContentValues import android.content.ContentValues
import android.content.Context import android.content.Context
@@ -31,28 +31,28 @@ import androidx.room.migration.Migration
import androidx.sqlite.db.SimpleSQLiteQuery import androidx.sqlite.db.SimpleSQLiteQuery
import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteDatabase
import androidx.sqlite.db.SupportSQLiteQuery import androidx.sqlite.db.SupportSQLiteQuery
import it.vfsfitvnm.vimusic.enums.AlbumSortBy import it.hamy.muza.enums.AlbumSortBy
import it.vfsfitvnm.vimusic.enums.ArtistSortBy import it.hamy.muza.enums.ArtistSortBy
import it.vfsfitvnm.vimusic.enums.PlaylistSortBy import it.hamy.muza.enums.PlaylistSortBy
import it.vfsfitvnm.vimusic.enums.SongSortBy import it.hamy.muza.enums.SongSortBy
import it.vfsfitvnm.vimusic.enums.SortOrder import it.hamy.muza.enums.SortOrder
import it.vfsfitvnm.vimusic.models.Album import it.hamy.muza.models.Album
import it.vfsfitvnm.vimusic.models.Artist import it.hamy.muza.models.Artist
import it.vfsfitvnm.vimusic.models.SongWithContentLength import it.hamy.muza.models.SongWithContentLength
import it.vfsfitvnm.vimusic.models.Event import it.hamy.muza.models.Event
import it.vfsfitvnm.vimusic.models.Format import it.hamy.muza.models.Format
import it.vfsfitvnm.vimusic.models.Info import it.hamy.muza.models.Info
import it.vfsfitvnm.vimusic.models.Lyrics import it.hamy.muza.models.Lyrics
import it.vfsfitvnm.vimusic.models.Playlist import it.hamy.muza.models.Playlist
import it.vfsfitvnm.vimusic.models.PlaylistPreview import it.hamy.muza.models.PlaylistPreview
import it.vfsfitvnm.vimusic.models.PlaylistWithSongs import it.hamy.muza.models.PlaylistWithSongs
import it.vfsfitvnm.vimusic.models.QueuedMediaItem import it.hamy.muza.models.QueuedMediaItem
import it.vfsfitvnm.vimusic.models.SearchQuery import it.hamy.muza.models.SearchQuery
import it.vfsfitvnm.vimusic.models.Song import it.hamy.muza.models.Song
import it.vfsfitvnm.vimusic.models.SongAlbumMap import it.hamy.muza.models.SongAlbumMap
import it.vfsfitvnm.vimusic.models.SongArtistMap import it.hamy.muza.models.SongArtistMap
import it.vfsfitvnm.vimusic.models.SongPlaylistMap import it.hamy.muza.models.SongPlaylistMap
import it.vfsfitvnm.vimusic.models.SortedSongPlaylistMap import it.hamy.muza.models.SortedSongPlaylistMap
import kotlin.jvm.Throws import kotlin.jvm.Throws
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic package it.hamy.muza
import android.content.ComponentName import android.content.ComponentName
import android.content.Context import android.content.Context
@@ -58,42 +58,42 @@ import androidx.media3.common.MediaItem
import androidx.media3.common.Player import androidx.media3.common.Player
import com.valentinilk.shimmer.LocalShimmerTheme import com.valentinilk.shimmer.LocalShimmerTheme
import com.valentinilk.shimmer.defaultShimmerTheme import com.valentinilk.shimmer.defaultShimmerTheme
import it.vfsfitvnm.compose.persist.PersistMap import it.hamy.compose.persist.PersistMap
import it.vfsfitvnm.compose.persist.PersistMapOwner import it.hamy.compose.persist.PersistMapOwner
import it.vfsfitvnm.innertube.Innertube import it.hamy.innertube.Innertube
import it.vfsfitvnm.innertube.models.bodies.BrowseBody import it.hamy.innertube.models.bodies.BrowseBody
import it.vfsfitvnm.innertube.requests.playlistPage import it.hamy.innertube.requests.playlistPage
import it.vfsfitvnm.innertube.requests.song import it.hamy.innertube.requests.song
import it.vfsfitvnm.vimusic.enums.ColorPaletteMode import it.hamy.muza.enums.ColorPaletteMode
import it.vfsfitvnm.vimusic.enums.ColorPaletteName import it.hamy.muza.enums.ColorPaletteName
import it.vfsfitvnm.vimusic.enums.ThumbnailRoundness import it.hamy.muza.enums.ThumbnailRoundness
import it.vfsfitvnm.vimusic.service.PlayerService import it.hamy.muza.service.PlayerService
import it.vfsfitvnm.vimusic.ui.components.BottomSheetMenu import it.hamy.muza.ui.components.BottomSheetMenu
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState import it.hamy.muza.ui.components.LocalMenuState
import it.vfsfitvnm.vimusic.ui.components.rememberBottomSheetState import it.hamy.muza.ui.components.rememberBottomSheetState
import it.vfsfitvnm.vimusic.ui.screens.albumRoute import it.hamy.muza.ui.screens.albumRoute
import it.vfsfitvnm.vimusic.ui.screens.artistRoute import it.hamy.muza.ui.screens.artistRoute
import it.vfsfitvnm.vimusic.ui.screens.home.HomeScreen import it.hamy.muza.ui.screens.home.HomeScreen
import it.vfsfitvnm.vimusic.ui.screens.player.Player import it.hamy.muza.ui.screens.player.Player
import it.vfsfitvnm.vimusic.ui.screens.playlistRoute import it.hamy.muza.ui.screens.playlistRoute
import it.vfsfitvnm.vimusic.ui.styling.Appearance import it.hamy.muza.ui.styling.Appearance
import it.vfsfitvnm.vimusic.ui.styling.Dimensions import it.hamy.muza.ui.styling.Dimensions
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.colorPaletteOf import it.hamy.muza.ui.styling.colorPaletteOf
import it.vfsfitvnm.vimusic.ui.styling.dynamicColorPaletteOf import it.hamy.muza.ui.styling.dynamicColorPaletteOf
import it.vfsfitvnm.vimusic.ui.styling.typographyOf import it.hamy.muza.ui.styling.typographyOf
import it.vfsfitvnm.vimusic.utils.applyFontPaddingKey import it.hamy.muza.utils.applyFontPaddingKey
import it.vfsfitvnm.vimusic.utils.asMediaItem import it.hamy.muza.utils.asMediaItem
import it.vfsfitvnm.vimusic.utils.colorPaletteModeKey import it.hamy.muza.utils.colorPaletteModeKey
import it.vfsfitvnm.vimusic.utils.colorPaletteNameKey import it.hamy.muza.utils.colorPaletteNameKey
import it.vfsfitvnm.vimusic.utils.forcePlay import it.hamy.muza.utils.forcePlay
import it.vfsfitvnm.vimusic.utils.getEnum import it.hamy.muza.utils.getEnum
import it.vfsfitvnm.vimusic.utils.intent import it.hamy.muza.utils.intent
import it.vfsfitvnm.vimusic.utils.isAtLeastAndroid6 import it.hamy.muza.utils.isAtLeastAndroid6
import it.vfsfitvnm.vimusic.utils.isAtLeastAndroid8 import it.hamy.muza.utils.isAtLeastAndroid8
import it.vfsfitvnm.vimusic.utils.preferences import it.hamy.muza.utils.preferences
import it.vfsfitvnm.vimusic.utils.thumbnailRoundnessKey import it.hamy.muza.utils.thumbnailRoundnessKey
import it.vfsfitvnm.vimusic.utils.useSystemFontKey import it.hamy.muza.utils.useSystemFontKey
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.filterNotNull

View File

@@ -1,13 +1,13 @@
package it.vfsfitvnm.vimusic package it.hamy.muza
import android.app.Application import android.app.Application
import coil.ImageLoader import coil.ImageLoader
import coil.ImageLoaderFactory import coil.ImageLoaderFactory
import coil.disk.DiskCache import coil.disk.DiskCache
import it.vfsfitvnm.vimusic.enums.CoilDiskCacheMaxSize import it.hamy.muza.enums.CoilDiskCacheMaxSize
import it.vfsfitvnm.vimusic.utils.coilDiskCacheMaxSizeKey import it.hamy.muza.utils.coilDiskCacheMaxSizeKey
import it.vfsfitvnm.vimusic.utils.getEnum import it.hamy.muza.utils.getEnum
import it.vfsfitvnm.vimusic.utils.preferences import it.hamy.muza.utils.preferences
class MainApplication : Application(), ImageLoaderFactory { class MainApplication : Application(), ImageLoaderFactory {
override fun onCreate() { override fun onCreate() {

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.enums package it.hamy.muza.enums
enum class AlbumSortBy { enum class AlbumSortBy {
Title, Title,

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.enums package it.hamy.muza.enums
enum class ArtistSortBy { enum class ArtistSortBy {
Name, Name,

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.enums package it.hamy.muza.enums
enum class BuiltInPlaylist { enum class BuiltInPlaylist {
Favorites, Favorites,

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.enums package it.hamy.muza.enums
enum class CoilDiskCacheMaxSize { enum class CoilDiskCacheMaxSize {
`128MB`, `128MB`,

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.enums package it.hamy.muza.enums
enum class ColorPaletteMode { enum class ColorPaletteMode {
Light, Light,

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.enums package it.hamy.muza.enums
enum class ColorPaletteName { enum class ColorPaletteName {
Default, Default,

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.enums package it.hamy.muza.enums
enum class ExoPlayerDiskCacheMaxSize { enum class ExoPlayerDiskCacheMaxSize {
`32MB`, `32MB`,

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.enums package it.hamy.muza.enums
enum class PlaylistSortBy { enum class PlaylistSortBy {
Name, Name,

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.enums package it.hamy.muza.enums
enum class SongSortBy { enum class SongSortBy {
PlayTime, PlayTime,

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.enums package it.hamy.muza.enums
enum class SortOrder { enum class SortOrder {
Ascending, Ascending,

View File

@@ -1,12 +1,9 @@
package it.vfsfitvnm.vimusic.enums package it.hamy.muza.enums
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.runtime.Composable
import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
enum class ThumbnailRoundness { enum class ThumbnailRoundness {
None, None,

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.Entity import androidx.room.Entity

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.Entity import androidx.room.Entity

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.ColumnInfo import androidx.room.ColumnInfo

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.Entity import androidx.room.Entity

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
data class Info( data class Info(
val id: String, val id: String,

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.Entity import androidx.room.Entity

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.Entity import androidx.room.Entity

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.Embedded import androidx.room.Embedded

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.Embedded import androidx.room.Embedded

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.Entity import androidx.room.Entity

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.Entity import androidx.room.Entity

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.ColumnInfo import androidx.room.ColumnInfo

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.ColumnInfo import androidx.room.ColumnInfo

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.ColumnInfo import androidx.room.ColumnInfo

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.Embedded import androidx.room.Embedded

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.models package it.hamy.muza.models
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.room.ColumnInfo import androidx.room.ColumnInfo

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.service package it.hamy.muza.service
import android.content.Context import android.content.Context
import android.content.res.Configuration import android.content.res.Configuration
@@ -9,7 +9,7 @@ import androidx.core.graphics.applyCanvas
import coil.imageLoader import coil.imageLoader
import coil.request.Disposable import coil.request.Disposable
import coil.request.ImageRequest import coil.request.ImageRequest
import it.vfsfitvnm.vimusic.utils.thumbnail import it.hamy.muza.utils.thumbnail
context(Context) context(Context)
class BitmapProvider( class BitmapProvider(

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.service package it.hamy.muza.service
import androidx.media3.common.PlaybackException import androidx.media3.common.PlaybackException

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.service package it.hamy.muza.service
import android.media.MediaDescription as BrowserMediaDescription import android.media.MediaDescription as BrowserMediaDescription
import android.media.browse.MediaBrowser.MediaItem as BrowserMediaItem import android.media.browse.MediaBrowser.MediaItem as BrowserMediaItem
@@ -17,17 +17,17 @@ import androidx.core.net.toUri
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.media3.common.Player import androidx.media3.common.Player
import androidx.media3.datasource.cache.Cache import androidx.media3.datasource.cache.Cache
import it.vfsfitvnm.vimusic.Database import it.hamy.muza.Database
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.models.Album import it.hamy.muza.models.Album
import it.vfsfitvnm.vimusic.models.PlaylistPreview import it.hamy.muza.models.PlaylistPreview
import it.vfsfitvnm.vimusic.models.Song import it.hamy.muza.models.Song
import it.vfsfitvnm.vimusic.models.SongWithContentLength import it.hamy.muza.models.SongWithContentLength
import it.vfsfitvnm.vimusic.utils.asMediaItem import it.hamy.muza.utils.asMediaItem
import it.vfsfitvnm.vimusic.utils.forcePlayAtIndex import it.hamy.muza.utils.forcePlayAtIndex
import it.vfsfitvnm.vimusic.utils.forceSeekToNext import it.hamy.muza.utils.forceSeekToNext
import it.vfsfitvnm.vimusic.utils.forceSeekToPrevious import it.hamy.muza.utils.forceSeekToPrevious
import it.vfsfitvnm.vimusic.utils.intent import it.hamy.muza.utils.intent
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.service package it.hamy.muza.service
import android.os.Binder as AndroidBinder import android.os.Binder as AndroidBinder
import android.annotation.SuppressLint import android.annotation.SuppressLint
@@ -67,45 +67,45 @@ import androidx.media3.exoplayer.source.MediaSource
import androidx.media3.extractor.ExtractorsFactory import androidx.media3.extractor.ExtractorsFactory
import androidx.media3.extractor.mkv.MatroskaExtractor import androidx.media3.extractor.mkv.MatroskaExtractor
import androidx.media3.extractor.mp4.FragmentedMp4Extractor import androidx.media3.extractor.mp4.FragmentedMp4Extractor
import it.vfsfitvnm.innertube.Innertube import it.hamy.innertube.Innertube
import it.vfsfitvnm.innertube.models.NavigationEndpoint import it.hamy.innertube.models.NavigationEndpoint
import it.vfsfitvnm.innertube.models.bodies.PlayerBody import it.hamy.innertube.models.bodies.PlayerBody
import it.vfsfitvnm.innertube.requests.player import it.hamy.innertube.requests.player
import it.vfsfitvnm.vimusic.Database import it.hamy.muza.Database
import it.vfsfitvnm.vimusic.MainActivity import it.hamy.muza.MainActivity
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.enums.ExoPlayerDiskCacheMaxSize import it.hamy.muza.enums.ExoPlayerDiskCacheMaxSize
import it.vfsfitvnm.vimusic.models.Event import it.hamy.muza.models.Event
import it.vfsfitvnm.vimusic.models.QueuedMediaItem import it.hamy.muza.models.QueuedMediaItem
import it.vfsfitvnm.vimusic.query import it.hamy.muza.query
import it.vfsfitvnm.vimusic.utils.InvincibleService import it.hamy.muza.utils.InvincibleService
import it.vfsfitvnm.vimusic.utils.RingBuffer import it.hamy.muza.utils.RingBuffer
import it.vfsfitvnm.vimusic.utils.TimerJob import it.hamy.muza.utils.TimerJob
import it.vfsfitvnm.vimusic.utils.YouTubeRadio import it.hamy.muza.utils.YouTubeRadio
import it.vfsfitvnm.vimusic.utils.activityPendingIntent import it.hamy.muza.utils.activityPendingIntent
import it.vfsfitvnm.vimusic.utils.broadCastPendingIntent import it.hamy.muza.utils.broadCastPendingIntent
import it.vfsfitvnm.vimusic.utils.exoPlayerDiskCacheMaxSizeKey import it.hamy.muza.utils.exoPlayerDiskCacheMaxSizeKey
import it.vfsfitvnm.vimusic.utils.findNextMediaItemById import it.hamy.muza.utils.findNextMediaItemById
import it.vfsfitvnm.vimusic.utils.forcePlayFromBeginning import it.hamy.muza.utils.forcePlayFromBeginning
import it.vfsfitvnm.vimusic.utils.forceSeekToNext import it.hamy.muza.utils.forceSeekToNext
import it.vfsfitvnm.vimusic.utils.forceSeekToPrevious import it.hamy.muza.utils.forceSeekToPrevious
import it.vfsfitvnm.vimusic.utils.getEnum import it.hamy.muza.utils.getEnum
import it.vfsfitvnm.vimusic.utils.intent import it.hamy.muza.utils.intent
import it.vfsfitvnm.vimusic.utils.isAtLeastAndroid13 import it.hamy.muza.utils.isAtLeastAndroid13
import it.vfsfitvnm.vimusic.utils.isAtLeastAndroid6 import it.hamy.muza.utils.isAtLeastAndroid6
import it.vfsfitvnm.vimusic.utils.isAtLeastAndroid8 import it.hamy.muza.utils.isAtLeastAndroid8
import it.vfsfitvnm.vimusic.utils.isInvincibilityEnabledKey import it.hamy.muza.utils.isInvincibilityEnabledKey
import it.vfsfitvnm.vimusic.utils.isShowingThumbnailInLockscreenKey import it.hamy.muza.utils.isShowingThumbnailInLockscreenKey
import it.vfsfitvnm.vimusic.utils.mediaItems import it.hamy.muza.utils.mediaItems
import it.vfsfitvnm.vimusic.utils.persistentQueueKey import it.hamy.muza.utils.persistentQueueKey
import it.vfsfitvnm.vimusic.utils.preferences import it.hamy.muza.utils.preferences
import it.vfsfitvnm.vimusic.utils.queueLoopEnabledKey import it.hamy.muza.utils.queueLoopEnabledKey
import it.vfsfitvnm.vimusic.utils.resumePlaybackWhenDeviceConnectedKey import it.hamy.muza.utils.resumePlaybackWhenDeviceConnectedKey
import it.vfsfitvnm.vimusic.utils.shouldBePlaying import it.hamy.muza.utils.shouldBePlaying
import it.vfsfitvnm.vimusic.utils.skipSilenceKey import it.hamy.muza.utils.skipSilenceKey
import it.vfsfitvnm.vimusic.utils.timer import it.hamy.muza.utils.timer
import it.vfsfitvnm.vimusic.utils.trackLoopEnabledKey import it.hamy.muza.utils.trackLoopEnabledKey
import it.vfsfitvnm.vimusic.utils.volumeNormalizationKey import it.hamy.muza.utils.volumeNormalizationKey
import kotlin.math.roundToInt import kotlin.math.roundToInt
import kotlin.system.exitProcess import kotlin.system.exitProcess
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
@@ -791,7 +791,7 @@ class PlayerService : InvincibleService(), Player.Listener, PlaybackStatsListene
mediaItem?.let(Database::insert) mediaItem?.let(Database::insert)
Database.insert( Database.insert(
it.vfsfitvnm.vimusic.models.Format( it.hamy.muza.models.Format(
songId = videoId, songId = videoId,
itag = format.itag, itag = format.itag,
mimeType = format.mimeType, mimeType = format.mimeType,
@@ -991,10 +991,10 @@ class PlayerService : InvincibleService(), Player.Listener, PlaybackStatsListene
) )
companion object { companion object {
val pause = Action("it.vfsfitvnm.vimusic.pause") val pause = Action("it.hamy.muza.pause")
val play = Action("it.vfsfitvnm.vimusic.play") val play = Action("it.hamy.muza.play")
val next = Action("it.vfsfitvnm.vimusic.next") val next = Action("it.hamy.muza.next")
val previous = Action("it.vfsfitvnm.vimusic.previous") val previous = Action("it.hamy.muza.previous")
} }
} }

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components package it.hamy.muza.ui.components
import androidx.activity.compose.BackHandler import androidx.activity.compose.BackHandler
import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.Animatable

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components package it.hamy.muza.ui.components
import androidx.activity.compose.BackHandler import androidx.activity.compose.BackHandler
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components package it.hamy.muza.ui.components
import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.Animatable
import androidx.compose.foundation.Canvas import androidx.compose.foundation.Canvas

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components package it.hamy.muza.ui.components
import androidx.compose.animation.core.MutableTransitionState import androidx.compose.animation.core.MutableTransitionState
import androidx.compose.animation.core.animateDp import androidx.compose.animation.core.animateDp

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components package it.hamy.muza.ui.components
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import androidx.compose.animation.core.tween import androidx.compose.animation.core.tween
import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeIn
@@ -48,12 +48,12 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties import androidx.compose.ui.window.DialogProperties
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.utils.center import it.hamy.muza.utils.center
import it.vfsfitvnm.vimusic.utils.drawCircle import it.hamy.muza.utils.drawCircle
import it.vfsfitvnm.vimusic.utils.medium import it.hamy.muza.utils.medium
import it.vfsfitvnm.vimusic.utils.secondary import it.hamy.muza.utils.secondary
import it.vfsfitvnm.vimusic.utils.semiBold import it.hamy.muza.utils.semiBold
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
@Composable @Composable
@@ -62,8 +62,8 @@ fun TextFieldDialog(
onDismiss: () -> Unit, onDismiss: () -> Unit,
onDone: (String) -> Unit, onDone: (String) -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
cancelText: String = "Cancel", cancelText: String = "Отмена",
doneText: String = "Done", doneText: String = "Готово",
initialTextInput: String = "", initialTextInput: String = "",
singleLine: Boolean = true, singleLine: Boolean = true,
maxLines: Int = 1, maxLines: Int = 1,
@@ -167,8 +167,8 @@ fun ConfirmationDialog(
onDismiss: () -> Unit, onDismiss: () -> Unit,
onConfirm: () -> Unit, onConfirm: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
cancelText: String = "Cancel", cancelText: String = "Отменить",
confirmText: String = "Confirm", confirmText: String = "Продолжить",
onCancel: () -> Unit = onDismiss onCancel: () -> Unit = onDismiss
) { ) {
val (_, typography) = LocalAppearance.current val (_, typography) = LocalAppearance.current
@@ -324,7 +324,7 @@ inline fun <T> ValueSelectorDialog(
.padding(end = 24.dp) .padding(end = 24.dp)
) { ) {
DialogTextButton( DialogTextButton(
text = "Cancel", text = "Отмена",
onClick = onDismiss, onClick = onDismiss,
modifier = Modifier modifier = Modifier
) )

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
@@ -10,9 +10,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.utils.color import it.hamy.muza.utils.color
import it.vfsfitvnm.vimusic.utils.medium import it.hamy.muza.utils.medium
@Composable @Composable
fun DialogTextButton( fun DialogTextButton(

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
@@ -24,11 +24,11 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets import it.hamy.muza.LocalPlayerAwareWindowInsets
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.utils.ScrollingInfo import it.hamy.muza.utils.ScrollingInfo
import it.vfsfitvnm.vimusic.utils.scrollingInfo import it.hamy.muza.utils.scrollingInfo
import it.vfsfitvnm.vimusic.utils.smoothScrollToTop import it.hamy.muza.utils.smoothScrollToTop
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ExperimentalAnimationApi @ExperimentalAnimationApi

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
@@ -16,10 +16,10 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.vimusic.ui.styling.Dimensions import it.hamy.muza.ui.styling.Dimensions
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.shimmer import it.hamy.muza.ui.styling.shimmer
import it.vfsfitvnm.vimusic.utils.medium import it.hamy.muza.utils.medium
import kotlin.random.Random import kotlin.random.Random
@Composable @Composable

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.compose.foundation.Image import androidx.compose.foundation.Image

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.BoxWithConstraints
@@ -14,11 +14,11 @@ import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import coil.compose.AsyncImage import coil.compose.AsyncImage
import com.valentinilk.shimmer.shimmer import com.valentinilk.shimmer.shimmer
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.px import it.hamy.muza.ui.styling.px
import it.vfsfitvnm.vimusic.ui.styling.shimmer import it.hamy.muza.ui.styling.shimmer
import it.vfsfitvnm.vimusic.utils.isLandscape import it.hamy.muza.utils.isLandscape
import it.vfsfitvnm.vimusic.utils.thumbnail import it.hamy.muza.utils.thumbnail
@Composable @Composable
inline fun LayoutWithAdaptiveThumbnail( inline fun LayoutWithAdaptiveThumbnail(

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import android.content.Intent import android.content.Intent
import androidx.activity.compose.BackHandler import androidx.activity.compose.BackHandler
@@ -43,34 +43,33 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.IntOffset
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem
import it.vfsfitvnm.innertube.models.NavigationEndpoint import it.hamy.innertube.models.NavigationEndpoint
import it.vfsfitvnm.vimusic.Database import it.hamy.muza.Database
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder import it.hamy.muza.LocalPlayerServiceBinder
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.enums.PlaylistSortBy import it.hamy.muza.enums.PlaylistSortBy
import it.vfsfitvnm.vimusic.enums.SortOrder import it.hamy.muza.enums.SortOrder
import it.vfsfitvnm.vimusic.models.Info import it.hamy.muza.models.Info
import it.vfsfitvnm.vimusic.models.Playlist import it.hamy.muza.models.Playlist
import it.vfsfitvnm.vimusic.models.Song import it.hamy.muza.models.Song
import it.vfsfitvnm.vimusic.models.SongPlaylistMap import it.hamy.muza.models.SongPlaylistMap
import it.vfsfitvnm.vimusic.query import it.hamy.muza.query
import it.vfsfitvnm.vimusic.transaction import it.hamy.muza.transaction
import it.vfsfitvnm.vimusic.ui.items.SongItem import it.hamy.muza.ui.items.SongItem
import it.vfsfitvnm.vimusic.ui.screens.albumRoute import it.hamy.muza.ui.screens.albumRoute
import it.vfsfitvnm.vimusic.ui.screens.artistRoute import it.hamy.muza.ui.screens.artistRoute
import it.vfsfitvnm.vimusic.ui.styling.Dimensions import it.hamy.muza.ui.styling.Dimensions
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.favoritesIcon import it.hamy.muza.ui.styling.favoritesIcon
import it.vfsfitvnm.vimusic.ui.styling.px import it.hamy.muza.ui.styling.px
import it.vfsfitvnm.vimusic.utils.addNext import it.hamy.muza.utils.addNext
import it.vfsfitvnm.vimusic.utils.asMediaItem import it.hamy.muza.utils.asMediaItem
import it.vfsfitvnm.vimusic.utils.enqueue import it.hamy.muza.utils.enqueue
import it.vfsfitvnm.vimusic.utils.forcePlay import it.hamy.muza.utils.forcePlay
import it.vfsfitvnm.vimusic.utils.formatAsDuration import it.hamy.muza.utils.formatAsDuration
import it.vfsfitvnm.vimusic.utils.medium import it.hamy.muza.utils.medium
import it.vfsfitvnm.vimusic.utils.semiBold import it.hamy.muza.utils.semiBold
import it.vfsfitvnm.vimusic.utils.thumbnail import it.hamy.muza.utils.thumbnail
import kotlin.system.measureTimeMillis
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
@@ -22,9 +22,9 @@ import androidx.compose.ui.draw.alpha
import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.utils.medium import it.hamy.muza.utils.medium
import it.vfsfitvnm.vimusic.utils.secondary import it.hamy.muza.utils.secondary
@Composable @Composable
inline fun Menu( inline fun Menu(

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import androidx.compose.animation.animateColor import androidx.compose.animation.animateColor
import androidx.compose.animation.core.animateFloat import androidx.compose.animation.core.animateFloat
@@ -32,13 +32,13 @@ import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.layout.layout import androidx.compose.ui.layout.layout
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets import it.hamy.muza.LocalPlayerAwareWindowInsets
import it.vfsfitvnm.vimusic.ui.styling.Dimensions import it.hamy.muza.ui.styling.Dimensions
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.utils.center import it.hamy.muza.utils.center
import it.vfsfitvnm.vimusic.utils.color import it.hamy.muza.utils.color
import it.vfsfitvnm.vimusic.utils.isLandscape import it.hamy.muza.utils.isLandscape
import it.vfsfitvnm.vimusic.utils.semiBold import it.hamy.muza.utils.semiBold
@Composable @Composable
inline fun NavigationRail( inline fun NavigationRail(

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
@@ -14,8 +14,8 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.primaryButton import it.hamy.muza.ui.styling.primaryButton
@Composable @Composable
fun PrimaryButton( fun PrimaryButton(

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.AnimatedContentScope import androidx.compose.animation.AnimatedContentScope
@@ -15,7 +15,7 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.IntOffset
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
@ExperimentalAnimationApi @ExperimentalAnimationApi
@Composable @Composable

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
@@ -14,8 +14,8 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.primaryButton import it.hamy.muza.ui.styling.primaryButton
@Composable @Composable
fun SecondaryButton( fun SecondaryButton(

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
@@ -9,9 +9,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.primaryButton import it.hamy.muza.ui.styling.primaryButton
import it.vfsfitvnm.vimusic.utils.medium import it.hamy.muza.utils.medium
@Composable @Composable
fun SecondaryTextButton( fun SecondaryTextButton(

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import androidx.compose.animation.animateColor import androidx.compose.animation.animateColor
import androidx.compose.animation.core.animateDp import androidx.compose.animation.core.animateDp
@@ -14,8 +14,8 @@ import androidx.compose.ui.geometry.center
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shadow import androidx.compose.ui.graphics.Shadow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.utils.drawCircle import it.hamy.muza.utils.drawCircle
@Composable @Composable
fun Switch( fun Switch(

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.hamy.muza.ui.components.themed
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
@@ -10,8 +10,8 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.shimmer import it.hamy.muza.ui.styling.shimmer
import kotlin.random.Random import kotlin.random.Random
@Composable @Composable

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.items package it.hamy.muza.ui.items
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
@@ -13,14 +13,14 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import coil.compose.AsyncImage import coil.compose.AsyncImage
import it.vfsfitvnm.vimusic.models.Album import it.hamy.muza.models.Album
import it.vfsfitvnm.vimusic.ui.components.themed.TextPlaceholder import it.hamy.muza.ui.components.themed.TextPlaceholder
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.shimmer import it.hamy.muza.ui.styling.shimmer
import it.vfsfitvnm.vimusic.utils.secondary import it.hamy.muza.utils.secondary
import it.vfsfitvnm.vimusic.utils.semiBold import it.hamy.muza.utils.semiBold
import it.vfsfitvnm.vimusic.utils.thumbnail import it.hamy.muza.utils.thumbnail
import it.vfsfitvnm.innertube.Innertube import it.hamy.innertube.Innertube
@Composable @Composable
fun AlbumItem( fun AlbumItem(

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.items package it.hamy.muza.ui.items
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
@@ -15,14 +15,14 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import coil.compose.AsyncImage import coil.compose.AsyncImage
import it.vfsfitvnm.vimusic.models.Artist import it.hamy.muza.models.Artist
import it.vfsfitvnm.vimusic.ui.components.themed.TextPlaceholder import it.hamy.muza.ui.components.themed.TextPlaceholder
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.shimmer import it.hamy.muza.ui.styling.shimmer
import it.vfsfitvnm.vimusic.utils.secondary import it.hamy.muza.utils.secondary
import it.vfsfitvnm.vimusic.utils.semiBold import it.hamy.muza.utils.semiBold
import it.vfsfitvnm.vimusic.utils.thumbnail import it.hamy.muza.utils.thumbnail
import it.vfsfitvnm.innertube.Innertube import it.hamy.innertube.Innertube
@Composable @Composable
fun ArtistItem( fun ArtistItem(

View File

@@ -1,10 +1,9 @@
package it.vfsfitvnm.vimusic.ui.items package it.hamy.muza.ui.items
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
@@ -13,7 +12,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.vimusic.ui.styling.Dimensions import it.hamy.muza.ui.styling.Dimensions
@Composable @Composable
inline fun ItemContainer( inline fun ItemContainer(

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.items package it.hamy.muza.ui.items
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
@@ -27,19 +27,19 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import coil.compose.AsyncImage import coil.compose.AsyncImage
import it.vfsfitvnm.vimusic.Database import it.hamy.muza.Database
import it.vfsfitvnm.vimusic.models.PlaylistPreview import it.hamy.muza.models.PlaylistPreview
import it.vfsfitvnm.vimusic.ui.components.themed.TextPlaceholder import it.hamy.muza.ui.components.themed.TextPlaceholder
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.onOverlay import it.hamy.muza.ui.styling.onOverlay
import it.vfsfitvnm.vimusic.ui.styling.overlay import it.hamy.muza.ui.styling.overlay
import it.vfsfitvnm.vimusic.ui.styling.shimmer import it.hamy.muza.ui.styling.shimmer
import it.vfsfitvnm.vimusic.utils.color import it.hamy.muza.utils.color
import it.vfsfitvnm.vimusic.utils.medium import it.hamy.muza.utils.medium
import it.vfsfitvnm.vimusic.utils.secondary import it.hamy.muza.utils.secondary
import it.vfsfitvnm.vimusic.utils.semiBold import it.hamy.muza.utils.semiBold
import it.vfsfitvnm.vimusic.utils.thumbnail import it.hamy.muza.utils.thumbnail
import it.vfsfitvnm.innertube.Innertube import it.hamy.innertube.Innertube
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.items package it.hamy.muza.ui.items
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
@@ -19,15 +19,15 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem
import coil.compose.AsyncImage import coil.compose.AsyncImage
import it.vfsfitvnm.vimusic.ui.components.themed.TextPlaceholder import it.hamy.muza.ui.components.themed.TextPlaceholder
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.shimmer import it.hamy.muza.ui.styling.shimmer
import it.vfsfitvnm.vimusic.utils.medium import it.hamy.muza.utils.medium
import it.vfsfitvnm.vimusic.utils.secondary import it.hamy.muza.utils.secondary
import it.vfsfitvnm.vimusic.utils.semiBold import it.hamy.muza.utils.semiBold
import it.vfsfitvnm.vimusic.utils.thumbnail import it.hamy.muza.utils.thumbnail
import it.vfsfitvnm.innertube.Innertube import it.hamy.innertube.Innertube
import it.vfsfitvnm.vimusic.models.Song import it.hamy.muza.models.Song
@Composable @Composable
fun SongItem( fun SongItem(

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.items package it.hamy.muza.ui.items
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
@@ -16,16 +16,16 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import coil.compose.AsyncImage import coil.compose.AsyncImage
import it.vfsfitvnm.vimusic.ui.components.themed.TextPlaceholder import it.hamy.muza.ui.components.themed.TextPlaceholder
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.onOverlay import it.hamy.muza.ui.styling.onOverlay
import it.vfsfitvnm.vimusic.ui.styling.overlay import it.hamy.muza.ui.styling.overlay
import it.vfsfitvnm.vimusic.ui.styling.shimmer import it.hamy.muza.ui.styling.shimmer
import it.vfsfitvnm.vimusic.utils.color import it.hamy.muza.utils.color
import it.vfsfitvnm.vimusic.utils.medium import it.hamy.muza.utils.medium
import it.vfsfitvnm.vimusic.utils.secondary import it.hamy.muza.utils.secondary
import it.vfsfitvnm.vimusic.utils.semiBold import it.hamy.muza.utils.semiBold
import it.vfsfitvnm.innertube.Innertube import it.hamy.innertube.Innertube
@Composable @Composable
fun VideoItem( fun VideoItem(

View File

@@ -1,16 +1,16 @@
package it.vfsfitvnm.vimusic.ui.screens package it.hamy.muza.ui.screens
import android.annotation.SuppressLint import android.annotation.SuppressLint
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import it.vfsfitvnm.compose.routing.Route0 import it.hamy.compose.routing.Route0
import it.vfsfitvnm.compose.routing.Route1 import it.hamy.compose.routing.Route1
import it.vfsfitvnm.compose.routing.RouteHandlerScope import it.hamy.compose.routing.RouteHandlerScope
import it.vfsfitvnm.vimusic.enums.BuiltInPlaylist import it.hamy.muza.enums.BuiltInPlaylist
import it.vfsfitvnm.vimusic.ui.screens.album.AlbumScreen import it.hamy.muza.ui.screens.album.AlbumScreen
import it.vfsfitvnm.vimusic.ui.screens.artist.ArtistScreen import it.hamy.muza.ui.screens.artist.ArtistScreen
import it.vfsfitvnm.vimusic.ui.screens.playlist.PlaylistScreen import it.hamy.muza.ui.screens.playlist.PlaylistScreen
val albumRoute = Route1<String?>("albumRoute") val albumRoute = Route1<String?>("albumRoute")
val artistRoute = Route1<String?>("artistRoute") val artistRoute = Route1<String?>("artistRoute")

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.screens.album package it.hamy.muza.ui.screens.album
import android.content.Intent import android.content.Intent
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
@@ -17,30 +17,30 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.valentinilk.shimmer.shimmer import com.valentinilk.shimmer.shimmer
import it.vfsfitvnm.compose.persist.PersistMapCleanup import it.hamy.compose.persist.PersistMapCleanup
import it.vfsfitvnm.compose.persist.persist import it.hamy.compose.persist.persist
import it.vfsfitvnm.innertube.Innertube import it.hamy.innertube.Innertube
import it.vfsfitvnm.innertube.models.bodies.BrowseBody import it.hamy.innertube.models.bodies.BrowseBody
import it.vfsfitvnm.innertube.requests.albumPage import it.hamy.innertube.requests.albumPage
import it.vfsfitvnm.compose.routing.RouteHandler import it.hamy.compose.routing.RouteHandler
import it.vfsfitvnm.vimusic.Database import it.hamy.muza.Database
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.models.Album import it.hamy.muza.models.Album
import it.vfsfitvnm.vimusic.models.SongAlbumMap import it.hamy.muza.models.SongAlbumMap
import it.vfsfitvnm.vimusic.query import it.hamy.muza.query
import it.vfsfitvnm.vimusic.ui.components.themed.Header import it.hamy.muza.ui.components.themed.Header
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderIconButton import it.hamy.muza.ui.components.themed.HeaderIconButton
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderPlaceholder import it.hamy.muza.ui.components.themed.HeaderPlaceholder
import it.vfsfitvnm.vimusic.ui.components.themed.Scaffold import it.hamy.muza.ui.components.themed.Scaffold
import it.vfsfitvnm.vimusic.ui.components.themed.adaptiveThumbnailContent import it.hamy.muza.ui.components.themed.adaptiveThumbnailContent
import it.vfsfitvnm.vimusic.ui.items.AlbumItem import it.hamy.muza.ui.items.AlbumItem
import it.vfsfitvnm.vimusic.ui.items.AlbumItemPlaceholder import it.hamy.muza.ui.items.AlbumItemPlaceholder
import it.vfsfitvnm.vimusic.ui.screens.albumRoute import it.hamy.muza.ui.screens.albumRoute
import it.vfsfitvnm.vimusic.ui.screens.globalRoutes import it.hamy.muza.ui.screens.globalRoutes
import it.vfsfitvnm.vimusic.ui.screens.searchresult.ItemsPage import it.hamy.muza.ui.screens.searchresult.ItemsPage
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.px import it.hamy.muza.ui.styling.px
import it.vfsfitvnm.vimusic.utils.asMediaItem import it.hamy.muza.utils.asMediaItem
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@@ -122,7 +122,7 @@ fun AlbumScreen(browseId: String) {
val (colorPalette) = LocalAppearance.current val (colorPalette) = LocalAppearance.current
val context = LocalContext.current val context = LocalContext.current
Header(title = album?.title ?: "Unknown") { Header(title = album?.title ?: "Неизвестный") {
textButton?.invoke() textButton?.invoke()
Spacer( Spacer(
@@ -182,8 +182,8 @@ fun AlbumScreen(browseId: String) {
tabIndex = tabIndex, tabIndex = tabIndex,
onTabChanged = { tabIndex = it }, onTabChanged = { tabIndex = it },
tabColumnContent = { Item -> tabColumnContent = { Item ->
Item(0, "Songs", R.drawable.musical_notes) Item(0, "Песни", R.drawable.musical_notes)
Item(1, "Other versions", R.drawable.disc) Item(1, "Другие версии", R.drawable.disc)
} }
) { currentTabIndex -> ) { currentTabIndex ->
saveableStateHolder.SaveableStateProvider(key = currentTabIndex) { saveableStateHolder.SaveableStateProvider(key = currentTabIndex) {
@@ -203,7 +203,7 @@ fun AlbumScreen(browseId: String) {
headerContent = headerContent, headerContent = headerContent,
initialPlaceholderCount = 1, initialPlaceholderCount = 1,
continuationPlaceholderCount = 1, continuationPlaceholderCount = 1,
emptyItemsText = "This album doesn't have any alternative version", emptyItemsText = "Этот альбом не имеет других версий",
itemsPageProvider = albumPage?.let { itemsPageProvider = albumPage?.let {
({ ({
Result.success( Result.success(

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.screens.album package it.hamy.muza.ui.screens.album
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
@@ -22,30 +22,30 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import it.vfsfitvnm.compose.persist.persistList import it.hamy.compose.persist.persistList
import it.vfsfitvnm.vimusic.Database import it.hamy.muza.Database
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets import it.hamy.muza.LocalPlayerAwareWindowInsets
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder import it.hamy.muza.LocalPlayerServiceBinder
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.models.Song import it.hamy.muza.models.Song
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState import it.hamy.muza.ui.components.LocalMenuState
import it.vfsfitvnm.vimusic.ui.components.ShimmerHost import it.hamy.muza.ui.components.ShimmerHost
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
import it.vfsfitvnm.vimusic.ui.components.themed.LayoutWithAdaptiveThumbnail import it.hamy.muza.ui.components.themed.LayoutWithAdaptiveThumbnail
import it.vfsfitvnm.vimusic.ui.components.themed.NonQueuedMediaItemMenu import it.hamy.muza.ui.components.themed.NonQueuedMediaItemMenu
import it.vfsfitvnm.vimusic.ui.components.themed.SecondaryTextButton import it.hamy.muza.ui.components.themed.SecondaryTextButton
import it.vfsfitvnm.vimusic.ui.items.SongItem import it.hamy.muza.ui.items.SongItem
import it.vfsfitvnm.vimusic.ui.items.SongItemPlaceholder import it.hamy.muza.ui.items.SongItemPlaceholder
import it.vfsfitvnm.vimusic.ui.styling.Dimensions import it.hamy.muza.ui.styling.Dimensions
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.utils.asMediaItem import it.hamy.muza.utils.asMediaItem
import it.vfsfitvnm.vimusic.utils.center import it.hamy.muza.utils.center
import it.vfsfitvnm.vimusic.utils.color import it.hamy.muza.utils.color
import it.vfsfitvnm.vimusic.utils.enqueue import it.hamy.muza.utils.enqueue
import it.vfsfitvnm.vimusic.utils.forcePlayAtIndex import it.hamy.muza.utils.forcePlayAtIndex
import it.vfsfitvnm.vimusic.utils.forcePlayFromBeginning import it.hamy.muza.utils.forcePlayFromBeginning
import it.vfsfitvnm.vimusic.utils.isLandscape import it.hamy.muza.utils.isLandscape
import it.vfsfitvnm.vimusic.utils.semiBold import it.hamy.muza.utils.semiBold
@ExperimentalAnimationApi @ExperimentalAnimationApi
@ExperimentalFoundationApi @ExperimentalFoundationApi
@@ -86,7 +86,7 @@ fun AlbumSongs(
Column(horizontalAlignment = Alignment.CenterHorizontally) { Column(horizontalAlignment = Alignment.CenterHorizontally) {
headerContent { headerContent {
SecondaryTextButton( SecondaryTextButton(
text = "Enqueue", text = "В очередь",
enabled = songs.isNotEmpty(), enabled = songs.isNotEmpty(),
onClick = { onClick = {
binder?.player?.enqueue(songs.map(Song::asMediaItem)) binder?.player?.enqueue(songs.map(Song::asMediaItem))

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.screens.artist package it.hamy.muza.ui.screens.artist
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
@@ -19,27 +19,27 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import it.vfsfitvnm.compose.persist.persist import it.hamy.compose.persist.persist
import it.vfsfitvnm.vimusic.Database import it.hamy.muza.Database
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets import it.hamy.muza.LocalPlayerAwareWindowInsets
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder import it.hamy.muza.LocalPlayerServiceBinder
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.models.Song import it.hamy.muza.models.Song
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState import it.hamy.muza.ui.components.LocalMenuState
import it.vfsfitvnm.vimusic.ui.components.ShimmerHost import it.hamy.muza.ui.components.ShimmerHost
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
import it.vfsfitvnm.vimusic.ui.components.themed.LayoutWithAdaptiveThumbnail import it.hamy.muza.ui.components.themed.LayoutWithAdaptiveThumbnail
import it.vfsfitvnm.vimusic.ui.components.themed.NonQueuedMediaItemMenu import it.hamy.muza.ui.components.themed.NonQueuedMediaItemMenu
import it.vfsfitvnm.vimusic.ui.components.themed.SecondaryTextButton import it.hamy.muza.ui.components.themed.SecondaryTextButton
import it.vfsfitvnm.vimusic.ui.items.SongItem import it.hamy.muza.ui.items.SongItem
import it.vfsfitvnm.vimusic.ui.items.SongItemPlaceholder import it.hamy.muza.ui.items.SongItemPlaceholder
import it.vfsfitvnm.vimusic.ui.styling.Dimensions import it.hamy.muza.ui.styling.Dimensions
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.px import it.hamy.muza.ui.styling.px
import it.vfsfitvnm.vimusic.utils.asMediaItem import it.hamy.muza.utils.asMediaItem
import it.vfsfitvnm.vimusic.utils.enqueue import it.hamy.muza.utils.enqueue
import it.vfsfitvnm.vimusic.utils.forcePlayAtIndex import it.hamy.muza.utils.forcePlayAtIndex
import it.vfsfitvnm.vimusic.utils.forcePlayFromBeginning import it.hamy.muza.utils.forcePlayFromBeginning
@ExperimentalFoundationApi @ExperimentalFoundationApi
@ExperimentalAnimationApi @ExperimentalAnimationApi
@@ -81,7 +81,7 @@ fun ArtistLocalSongs(
Column(horizontalAlignment = Alignment.CenterHorizontally) { Column(horizontalAlignment = Alignment.CenterHorizontally) {
headerContent { headerContent {
SecondaryTextButton( SecondaryTextButton(
text = "Enqueue", text = "В очередь",
enabled = !songs.isNullOrEmpty(), enabled = !songs.isNullOrEmpty(),
onClick = { onClick = {
binder?.player?.enqueue(songs!!.map(Song::asMediaItem)) binder?.player?.enqueue(songs!!.map(Song::asMediaItem))

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.screens.artist package it.hamy.muza.ui.screens.artist
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
@@ -26,31 +26,31 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.innertube.Innertube import it.hamy.innertube.Innertube
import it.vfsfitvnm.innertube.models.NavigationEndpoint import it.hamy.innertube.models.NavigationEndpoint
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets import it.hamy.muza.LocalPlayerAwareWindowInsets
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder import it.hamy.muza.LocalPlayerServiceBinder
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState import it.hamy.muza.ui.components.LocalMenuState
import it.vfsfitvnm.vimusic.ui.components.ShimmerHost import it.hamy.muza.ui.components.ShimmerHost
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
import it.vfsfitvnm.vimusic.ui.components.themed.LayoutWithAdaptiveThumbnail import it.hamy.muza.ui.components.themed.LayoutWithAdaptiveThumbnail
import it.vfsfitvnm.vimusic.ui.components.themed.NonQueuedMediaItemMenu import it.hamy.muza.ui.components.themed.NonQueuedMediaItemMenu
import it.vfsfitvnm.vimusic.ui.components.themed.SecondaryTextButton import it.hamy.muza.ui.components.themed.SecondaryTextButton
import it.vfsfitvnm.vimusic.ui.components.themed.TextPlaceholder import it.hamy.muza.ui.components.themed.TextPlaceholder
import it.vfsfitvnm.vimusic.ui.items.AlbumItem import it.hamy.muza.ui.items.AlbumItem
import it.vfsfitvnm.vimusic.ui.items.AlbumItemPlaceholder import it.hamy.muza.ui.items.AlbumItemPlaceholder
import it.vfsfitvnm.vimusic.ui.items.SongItem import it.hamy.muza.ui.items.SongItem
import it.vfsfitvnm.vimusic.ui.items.SongItemPlaceholder import it.hamy.muza.ui.items.SongItemPlaceholder
import it.vfsfitvnm.vimusic.ui.styling.Dimensions import it.hamy.muza.ui.styling.Dimensions
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.px import it.hamy.muza.ui.styling.px
import it.vfsfitvnm.vimusic.utils.align import it.hamy.muza.utils.align
import it.vfsfitvnm.vimusic.utils.asMediaItem import it.hamy.muza.utils.asMediaItem
import it.vfsfitvnm.vimusic.utils.color import it.hamy.muza.utils.color
import it.vfsfitvnm.vimusic.utils.forcePlay import it.hamy.muza.utils.forcePlay
import it.vfsfitvnm.vimusic.utils.secondary import it.hamy.muza.utils.secondary
import it.vfsfitvnm.vimusic.utils.semiBold import it.hamy.muza.utils.semiBold
@ExperimentalFoundationApi @ExperimentalFoundationApi
@ExperimentalAnimationApi @ExperimentalAnimationApi
@@ -103,7 +103,7 @@ fun ArtistOverview(
headerContent { headerContent {
youtubeArtistPage?.shuffleEndpoint?.let { endpoint -> youtubeArtistPage?.shuffleEndpoint?.let { endpoint ->
SecondaryTextButton( SecondaryTextButton(
text = "Shuffle", text = "Перемешать",
onClick = { onClick = {
binder?.stopRadio() binder?.stopRadio()
binder?.playRadio(endpoint) binder?.playRadio(endpoint)
@@ -125,14 +125,14 @@ fun ArtistOverview(
.padding(endPaddingValues) .padding(endPaddingValues)
) { ) {
BasicText( BasicText(
text = "Songs", text = "Песни",
style = typography.m.semiBold, style = typography.m.semiBold,
modifier = sectionTextModifier modifier = sectionTextModifier
) )
youtubeArtistPage.songsEndpoint?.let { youtubeArtistPage.songsEndpoint?.let {
BasicText( BasicText(
text = "View all", text = "Все",
style = typography.xs.secondary, style = typography.xs.secondary,
modifier = sectionTextModifier modifier = sectionTextModifier
.clickable(onClick = onViewAllSongsClick), .clickable(onClick = onViewAllSongsClick),
@@ -178,14 +178,14 @@ fun ArtistOverview(
.padding(endPaddingValues) .padding(endPaddingValues)
) { ) {
BasicText( BasicText(
text = "Albums", text = "Альбомы",
style = typography.m.semiBold, style = typography.m.semiBold,
modifier = sectionTextModifier modifier = sectionTextModifier
) )
youtubeArtistPage.albumsEndpoint?.let { youtubeArtistPage.albumsEndpoint?.let {
BasicText( BasicText(
text = "View all", text = "Все",
style = typography.xs.secondary, style = typography.xs.secondary,
modifier = sectionTextModifier modifier = sectionTextModifier
.clickable(onClick = onViewAllAlbumsClick), .clickable(onClick = onViewAllAlbumsClick),
@@ -223,14 +223,14 @@ fun ArtistOverview(
.padding(endPaddingValues) .padding(endPaddingValues)
) { ) {
BasicText( BasicText(
text = "Singles", text = "Синглы",
style = typography.m.semiBold, style = typography.m.semiBold,
modifier = sectionTextModifier modifier = sectionTextModifier
) )
youtubeArtistPage.singlesEndpoint?.let { youtubeArtistPage.singlesEndpoint?.let {
BasicText( BasicText(
text = "View all", text = "Все",
style = typography.xs.secondary, style = typography.xs.secondary,
modifier = sectionTextModifier modifier = sectionTextModifier
.clickable(onClick = onViewAllSinglesClick), .clickable(onClick = onViewAllSinglesClick),

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.screens.artist package it.hamy.muza.ui.screens.artist
import android.content.Intent import android.content.Intent
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
@@ -17,41 +17,41 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.valentinilk.shimmer.shimmer import com.valentinilk.shimmer.shimmer
import it.vfsfitvnm.compose.persist.PersistMapCleanup import it.hamy.compose.persist.PersistMapCleanup
import it.vfsfitvnm.compose.persist.persist import it.hamy.compose.persist.persist
import it.vfsfitvnm.innertube.Innertube import it.hamy.innertube.Innertube
import it.vfsfitvnm.innertube.models.bodies.BrowseBody import it.hamy.innertube.models.bodies.BrowseBody
import it.vfsfitvnm.innertube.models.bodies.ContinuationBody import it.hamy.innertube.models.bodies.ContinuationBody
import it.vfsfitvnm.innertube.requests.artistPage import it.hamy.innertube.requests.artistPage
import it.vfsfitvnm.innertube.requests.itemsPage import it.hamy.innertube.requests.itemsPage
import it.vfsfitvnm.innertube.utils.from import it.hamy.innertube.utils.from
import it.vfsfitvnm.compose.routing.RouteHandler import it.hamy.compose.routing.RouteHandler
import it.vfsfitvnm.vimusic.Database import it.hamy.muza.Database
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder import it.hamy.muza.LocalPlayerServiceBinder
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.models.Artist import it.hamy.muza.models.Artist
import it.vfsfitvnm.vimusic.query import it.hamy.muza.query
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState import it.hamy.muza.ui.components.LocalMenuState
import it.vfsfitvnm.vimusic.ui.components.themed.Header import it.hamy.muza.ui.components.themed.Header
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderIconButton import it.hamy.muza.ui.components.themed.HeaderIconButton
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderPlaceholder import it.hamy.muza.ui.components.themed.HeaderPlaceholder
import it.vfsfitvnm.vimusic.ui.components.themed.NonQueuedMediaItemMenu import it.hamy.muza.ui.components.themed.NonQueuedMediaItemMenu
import it.vfsfitvnm.vimusic.ui.components.themed.Scaffold import it.hamy.muza.ui.components.themed.Scaffold
import it.vfsfitvnm.vimusic.ui.components.themed.adaptiveThumbnailContent import it.hamy.muza.ui.components.themed.adaptiveThumbnailContent
import it.vfsfitvnm.vimusic.ui.items.AlbumItem import it.hamy.muza.ui.items.AlbumItem
import it.vfsfitvnm.vimusic.ui.items.AlbumItemPlaceholder import it.hamy.muza.ui.items.AlbumItemPlaceholder
import it.vfsfitvnm.vimusic.ui.items.SongItem import it.hamy.muza.ui.items.SongItem
import it.vfsfitvnm.vimusic.ui.items.SongItemPlaceholder import it.hamy.muza.ui.items.SongItemPlaceholder
import it.vfsfitvnm.vimusic.ui.screens.albumRoute import it.hamy.muza.ui.screens.albumRoute
import it.vfsfitvnm.vimusic.ui.screens.globalRoutes import it.hamy.muza.ui.screens.globalRoutes
import it.vfsfitvnm.vimusic.ui.screens.searchresult.ItemsPage import it.hamy.muza.ui.screens.searchresult.ItemsPage
import it.vfsfitvnm.vimusic.ui.styling.Dimensions import it.hamy.muza.ui.styling.Dimensions
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.px import it.hamy.muza.ui.styling.px
import it.vfsfitvnm.vimusic.utils.artistScreenTabIndexKey import it.hamy.muza.utils.artistScreenTabIndexKey
import it.vfsfitvnm.vimusic.utils.asMediaItem import it.hamy.muza.utils.asMediaItem
import it.vfsfitvnm.vimusic.utils.forcePlay import it.hamy.muza.utils.forcePlay
import it.vfsfitvnm.vimusic.utils.rememberPreference import it.hamy.muza.utils.rememberPreference
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.distinctUntilChanged

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.screens.builtinplaylist package it.hamy.muza.ui.screens.builtinplaylist
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
@@ -6,12 +6,12 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.saveable.rememberSaveableStateHolder import androidx.compose.runtime.saveable.rememberSaveableStateHolder
import it.vfsfitvnm.compose.persist.PersistMapCleanup import it.hamy.compose.persist.PersistMapCleanup
import it.vfsfitvnm.compose.routing.RouteHandler import it.hamy.compose.routing.RouteHandler
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.enums.BuiltInPlaylist import it.hamy.muza.enums.BuiltInPlaylist
import it.vfsfitvnm.vimusic.ui.components.themed.Scaffold import it.hamy.muza.ui.components.themed.Scaffold
import it.vfsfitvnm.vimusic.ui.screens.globalRoutes import it.hamy.muza.ui.screens.globalRoutes
@ExperimentalFoundationApi @ExperimentalFoundationApi
@ExperimentalAnimationApi @ExperimentalAnimationApi
@@ -38,8 +38,8 @@ fun BuiltInPlaylistScreen(builtInPlaylist: BuiltInPlaylist) {
tabIndex = tabIndex, tabIndex = tabIndex,
onTabChanged = onTabIndexChanged, onTabChanged = onTabIndexChanged,
tabColumnContent = { Item -> tabColumnContent = { Item ->
Item(0, "Favorites", R.drawable.heart) Item(0, "Любимые", R.drawable.heart)
Item(1, "Offline", R.drawable.airplane) Item(1, "Сохранённые", R.drawable.airplane)
} }
) { currentTabIndex -> ) { currentTabIndex ->
saveableStateHolder.SaveableStateProvider(key = currentTabIndex) { saveableStateHolder.SaveableStateProvider(key = currentTabIndex) {

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.screens.builtinplaylist package it.hamy.muza.ui.screens.builtinplaylist
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
@@ -20,28 +20,28 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.compose.persist.persistList import it.hamy.compose.persist.persistList
import it.vfsfitvnm.vimusic.Database import it.hamy.muza.Database
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets import it.hamy.muza.LocalPlayerAwareWindowInsets
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder import it.hamy.muza.LocalPlayerServiceBinder
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.enums.BuiltInPlaylist import it.hamy.muza.enums.BuiltInPlaylist
import it.vfsfitvnm.vimusic.models.Song import it.hamy.muza.models.Song
import it.vfsfitvnm.vimusic.models.SongWithContentLength import it.hamy.muza.models.SongWithContentLength
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState import it.hamy.muza.ui.components.LocalMenuState
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
import it.vfsfitvnm.vimusic.ui.components.themed.Header import it.hamy.muza.ui.components.themed.Header
import it.vfsfitvnm.vimusic.ui.components.themed.InHistoryMediaItemMenu import it.hamy.muza.ui.components.themed.InHistoryMediaItemMenu
import it.vfsfitvnm.vimusic.ui.components.themed.NonQueuedMediaItemMenu import it.hamy.muza.ui.components.themed.NonQueuedMediaItemMenu
import it.vfsfitvnm.vimusic.ui.components.themed.SecondaryTextButton import it.hamy.muza.ui.components.themed.SecondaryTextButton
import it.vfsfitvnm.vimusic.ui.items.SongItem import it.hamy.muza.ui.items.SongItem
import it.vfsfitvnm.vimusic.ui.styling.Dimensions import it.hamy.muza.ui.styling.Dimensions
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.px import it.hamy.muza.ui.styling.px
import it.vfsfitvnm.vimusic.utils.asMediaItem import it.hamy.muza.utils.asMediaItem
import it.vfsfitvnm.vimusic.utils.enqueue import it.hamy.muza.utils.enqueue
import it.vfsfitvnm.vimusic.utils.forcePlayAtIndex import it.hamy.muza.utils.forcePlayAtIndex
import it.vfsfitvnm.vimusic.utils.forcePlayFromBeginning import it.hamy.muza.utils.forcePlayFromBeginning
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
@@ -94,14 +94,14 @@ fun BuiltInPlaylistSongs(builtInPlaylist: BuiltInPlaylist) {
) { ) {
Header( Header(
title = when (builtInPlaylist) { title = when (builtInPlaylist) {
BuiltInPlaylist.Favorites -> "Favorites" BuiltInPlaylist.Favorites -> "Любимые"
BuiltInPlaylist.Offline -> "Offline" BuiltInPlaylist.Offline -> "Сохранённые"
}, },
modifier = Modifier modifier = Modifier
.padding(bottom = 8.dp) .padding(bottom = 8.dp)
) { ) {
SecondaryTextButton( SecondaryTextButton(
text = "Enqueue", text = "В очередь",
enabled = songs.isNotEmpty(), enabled = songs.isNotEmpty(),
onClick = { onClick = {
binder?.player?.enqueue(songs.map(Song::asMediaItem)) binder?.player?.enqueue(songs.map(Song::asMediaItem))

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.screens.home package it.hamy.muza.ui.screens.home
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.animation.core.LinearEasing import androidx.compose.animation.core.LinearEasing
@@ -15,34 +15,32 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.compose.persist.persist import it.hamy.compose.persist.persist
import it.vfsfitvnm.vimusic.Database import it.hamy.muza.Database
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets import it.hamy.muza.LocalPlayerAwareWindowInsets
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.enums.AlbumSortBy import it.hamy.muza.enums.AlbumSortBy
import it.vfsfitvnm.vimusic.enums.SortOrder import it.hamy.muza.enums.SortOrder
import it.vfsfitvnm.vimusic.models.Album import it.hamy.muza.models.Album
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
import it.vfsfitvnm.vimusic.ui.components.themed.Header import it.hamy.muza.ui.components.themed.Header
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderIconButton import it.hamy.muza.ui.components.themed.HeaderIconButton
import it.vfsfitvnm.vimusic.ui.items.AlbumItem import it.hamy.muza.ui.items.AlbumItem
import it.vfsfitvnm.vimusic.ui.styling.Dimensions import it.hamy.muza.ui.styling.Dimensions
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.px import it.hamy.muza.ui.styling.px
import it.vfsfitvnm.vimusic.utils.albumSortByKey import it.hamy.muza.utils.albumSortByKey
import it.vfsfitvnm.vimusic.utils.albumSortOrderKey import it.hamy.muza.utils.albumSortOrderKey
import it.vfsfitvnm.vimusic.utils.rememberPreference import it.hamy.muza.utils.rememberPreference
@ExperimentalFoundationApi @ExperimentalFoundationApi
@ExperimentalAnimationApi @ExperimentalAnimationApi
@@ -85,7 +83,7 @@ fun HomeAlbums(
key = "header", key = "header",
contentType = 0 contentType = 0
) { ) {
Header(title = "Albums") { Header(title = "Альбомы") {
HeaderIconButton( HeaderIconButton(
icon = R.drawable.calendar, icon = R.drawable.calendar,
color = if (sortBy == AlbumSortBy.Year) colorPalette.text else colorPalette.textDisabled, color = if (sortBy == AlbumSortBy.Year) colorPalette.text else colorPalette.textDisabled,

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.screens.home package it.hamy.muza.ui.screens.home
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.animation.core.LinearEasing import androidx.compose.animation.core.LinearEasing
@@ -28,23 +28,23 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.compose.persist.persistList import it.hamy.compose.persist.persistList
import it.vfsfitvnm.vimusic.Database import it.hamy.muza.Database
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets import it.hamy.muza.LocalPlayerAwareWindowInsets
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.enums.ArtistSortBy import it.hamy.muza.enums.ArtistSortBy
import it.vfsfitvnm.vimusic.enums.SortOrder import it.hamy.muza.enums.SortOrder
import it.vfsfitvnm.vimusic.models.Artist import it.hamy.muza.models.Artist
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
import it.vfsfitvnm.vimusic.ui.components.themed.Header import it.hamy.muza.ui.components.themed.Header
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderIconButton import it.hamy.muza.ui.components.themed.HeaderIconButton
import it.vfsfitvnm.vimusic.ui.items.ArtistItem import it.hamy.muza.ui.items.ArtistItem
import it.vfsfitvnm.vimusic.ui.styling.Dimensions import it.hamy.muza.ui.styling.Dimensions
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.px import it.hamy.muza.ui.styling.px
import it.vfsfitvnm.vimusic.utils.artistSortByKey import it.hamy.muza.utils.artistSortByKey
import it.vfsfitvnm.vimusic.utils.artistSortOrderKey import it.hamy.muza.utils.artistSortOrderKey
import it.vfsfitvnm.vimusic.utils.rememberPreference import it.hamy.muza.utils.rememberPreference
@ExperimentalFoundationApi @ExperimentalFoundationApi
@ExperimentalAnimationApi @ExperimentalAnimationApi
@@ -94,7 +94,7 @@ fun HomeArtistList(
contentType = 0, contentType = 0,
span = { GridItemSpan(maxLineSpan) } span = { GridItemSpan(maxLineSpan) }
) { ) {
Header(title = "Artists") { Header(title = "Исполнители") {
HeaderIconButton( HeaderIconButton(
icon = R.drawable.text, icon = R.drawable.text,
color = if (sortBy == ArtistSortBy.Name) colorPalette.text else colorPalette.textDisabled, color = if (sortBy == ArtistSortBy.Name) colorPalette.text else colorPalette.textDisabled,

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.screens.home package it.hamy.muza.ui.screens.home
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.animation.core.LinearEasing import androidx.compose.animation.core.LinearEasing
@@ -30,28 +30,28 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.compose.persist.persistList import it.hamy.compose.persist.persistList
import it.vfsfitvnm.vimusic.Database import it.hamy.muza.Database
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets import it.hamy.muza.LocalPlayerAwareWindowInsets
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.enums.BuiltInPlaylist import it.hamy.muza.enums.BuiltInPlaylist
import it.vfsfitvnm.vimusic.enums.PlaylistSortBy import it.hamy.muza.enums.PlaylistSortBy
import it.vfsfitvnm.vimusic.enums.SortOrder import it.hamy.muza.enums.SortOrder
import it.vfsfitvnm.vimusic.models.Playlist import it.hamy.muza.models.Playlist
import it.vfsfitvnm.vimusic.models.PlaylistPreview import it.hamy.muza.models.PlaylistPreview
import it.vfsfitvnm.vimusic.query import it.hamy.muza.query
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
import it.vfsfitvnm.vimusic.ui.components.themed.Header import it.hamy.muza.ui.components.themed.Header
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderIconButton import it.hamy.muza.ui.components.themed.HeaderIconButton
import it.vfsfitvnm.vimusic.ui.components.themed.SecondaryTextButton import it.hamy.muza.ui.components.themed.SecondaryTextButton
import it.vfsfitvnm.vimusic.ui.components.themed.TextFieldDialog import it.hamy.muza.ui.components.themed.TextFieldDialog
import it.vfsfitvnm.vimusic.ui.items.PlaylistItem import it.hamy.muza.ui.items.PlaylistItem
import it.vfsfitvnm.vimusic.ui.styling.Dimensions import it.hamy.muza.ui.styling.Dimensions
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.px import it.hamy.muza.ui.styling.px
import it.vfsfitvnm.vimusic.utils.playlistSortByKey import it.hamy.muza.utils.playlistSortByKey
import it.vfsfitvnm.vimusic.utils.playlistSortOrderKey import it.hamy.muza.utils.playlistSortOrderKey
import it.vfsfitvnm.vimusic.utils.rememberPreference import it.hamy.muza.utils.rememberPreference
@ExperimentalAnimationApi @ExperimentalAnimationApi
@ExperimentalFoundationApi @ExperimentalFoundationApi
@@ -69,7 +69,7 @@ fun HomePlaylists(
if (isCreatingANewPlaylist) { if (isCreatingANewPlaylist) {
TextFieldDialog( TextFieldDialog(
hintText = "Enter the playlist name", hintText = "Введите название плейлиста",
onDismiss = { onDismiss = {
isCreatingANewPlaylist = false isCreatingANewPlaylist = false
}, },
@@ -116,9 +116,9 @@ fun HomePlaylists(
.background(colorPalette.background0) .background(colorPalette.background0)
) { ) {
item(key = "header", contentType = 0, span = { GridItemSpan(maxLineSpan) }) { item(key = "header", contentType = 0, span = { GridItemSpan(maxLineSpan) }) {
Header(title = "Playlists") { Header(title = "Плейлисты") {
SecondaryTextButton( SecondaryTextButton(
text = "New playlist", text = "Новый плейлист",
onClick = { isCreatingANewPlaylist = true } onClick = { isCreatingANewPlaylist = true }
) )
@@ -164,7 +164,7 @@ fun HomePlaylists(
PlaylistItem( PlaylistItem(
icon = R.drawable.heart, icon = R.drawable.heart,
colorTint = colorPalette.red, colorTint = colorPalette.red,
name = "Favorites", name = "Любимые",
songCount = null, songCount = null,
thumbnailSizeDp = thumbnailSizeDp, thumbnailSizeDp = thumbnailSizeDp,
alternative = true, alternative = true,
@@ -178,7 +178,7 @@ fun HomePlaylists(
PlaylistItem( PlaylistItem(
icon = R.drawable.airplane, icon = R.drawable.airplane,
colorTint = colorPalette.blue, colorTint = colorPalette.blue,
name = "Offline", name = "Сохранённые",
songCount = null, songCount = null,
thumbnailSizeDp = thumbnailSizeDp, thumbnailSizeDp = thumbnailSizeDp,
alternative = true, alternative = true,

View File

@@ -1,41 +1,41 @@
package it.vfsfitvnm.vimusic.ui.screens.home package it.hamy.muza.ui.screens.home
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.saveable.rememberSaveableStateHolder import androidx.compose.runtime.saveable.rememberSaveableStateHolder
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import it.vfsfitvnm.compose.persist.PersistMapCleanup import it.hamy.compose.persist.PersistMapCleanup
import it.vfsfitvnm.compose.routing.RouteHandler import it.hamy.compose.routing.RouteHandler
import it.vfsfitvnm.compose.routing.defaultStacking import it.hamy.compose.routing.defaultStacking
import it.vfsfitvnm.compose.routing.defaultStill import it.hamy.compose.routing.defaultStill
import it.vfsfitvnm.compose.routing.defaultUnstacking import it.hamy.compose.routing.defaultUnstacking
import it.vfsfitvnm.compose.routing.isStacking import it.hamy.compose.routing.isStacking
import it.vfsfitvnm.compose.routing.isUnknown import it.hamy.compose.routing.isUnknown
import it.vfsfitvnm.compose.routing.isUnstacking import it.hamy.compose.routing.isUnstacking
import it.vfsfitvnm.vimusic.Database import it.hamy.muza.Database
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.models.SearchQuery import it.hamy.muza.models.SearchQuery
import it.vfsfitvnm.vimusic.query import it.hamy.muza.query
import it.vfsfitvnm.vimusic.ui.components.themed.Scaffold import it.hamy.muza.ui.components.themed.Scaffold
import it.vfsfitvnm.vimusic.ui.screens.albumRoute import it.hamy.muza.ui.screens.albumRoute
import it.vfsfitvnm.vimusic.ui.screens.artistRoute import it.hamy.muza.ui.screens.artistRoute
import it.vfsfitvnm.vimusic.ui.screens.builtInPlaylistRoute import it.hamy.muza.ui.screens.builtInPlaylistRoute
import it.vfsfitvnm.vimusic.ui.screens.builtinplaylist.BuiltInPlaylistScreen import it.hamy.muza.ui.screens.builtinplaylist.BuiltInPlaylistScreen
import it.vfsfitvnm.vimusic.ui.screens.globalRoutes import it.hamy.muza.ui.screens.globalRoutes
import it.vfsfitvnm.vimusic.ui.screens.localPlaylistRoute import it.hamy.muza.ui.screens.localPlaylistRoute
import it.vfsfitvnm.vimusic.ui.screens.localplaylist.LocalPlaylistScreen import it.hamy.muza.ui.screens.localplaylist.LocalPlaylistScreen
import it.vfsfitvnm.vimusic.ui.screens.playlistRoute import it.hamy.muza.ui.screens.playlistRoute
import it.vfsfitvnm.vimusic.ui.screens.search.SearchScreen import it.hamy.muza.ui.screens.search.SearchScreen
import it.vfsfitvnm.vimusic.ui.screens.searchResultRoute import it.hamy.muza.ui.screens.searchResultRoute
import it.vfsfitvnm.vimusic.ui.screens.searchRoute import it.hamy.muza.ui.screens.searchRoute
import it.vfsfitvnm.vimusic.ui.screens.searchresult.SearchResultScreen import it.hamy.muza.ui.screens.searchresult.SearchResultScreen
import it.vfsfitvnm.vimusic.ui.screens.settings.SettingsScreen import it.hamy.muza.ui.screens.settings.SettingsScreen
import it.vfsfitvnm.vimusic.ui.screens.settingsRoute import it.hamy.muza.ui.screens.settingsRoute
import it.vfsfitvnm.vimusic.utils.homeScreenTabIndexKey import it.hamy.muza.utils.homeScreenTabIndexKey
import it.vfsfitvnm.vimusic.utils.pauseSearchHistoryKey import it.hamy.muza.utils.pauseSearchHistoryKey
import it.vfsfitvnm.vimusic.utils.preferences import it.hamy.muza.utils.preferences
import it.vfsfitvnm.vimusic.utils.rememberPreference import it.hamy.muza.utils.rememberPreference
@ExperimentalFoundationApi @ExperimentalFoundationApi
@ExperimentalAnimationApi @ExperimentalAnimationApi
@@ -119,11 +119,11 @@ fun HomeScreen(onPlaylistUrl: (String) -> Unit) {
tabIndex = tabIndex, tabIndex = tabIndex,
onTabChanged = onTabChanged, onTabChanged = onTabChanged,
tabColumnContent = { Item -> tabColumnContent = { Item ->
Item(0, "Quick picks", R.drawable.sparkles) Item(0, "Обзор", R.drawable.sparkles)
Item(1, "Songs", R.drawable.musical_notes) Item(1, "Песни", R.drawable.musical_notes)
Item(2, "Playlists", R.drawable.playlist) Item(2, "Плейлисты", R.drawable.playlist)
Item(3, "Artists", R.drawable.person) Item(3, "Исполнители", R.drawable.person)
Item(4, "Albums", R.drawable.disc) Item(4, "Альбомы", R.drawable.disc)
} }
) { currentTabIndex -> ) { currentTabIndex ->
saveableStateHolder.SaveableStateProvider(key = currentTabIndex) { saveableStateHolder.SaveableStateProvider(key = currentTabIndex) {

View File

@@ -1,4 +1,4 @@
package it.vfsfitvnm.vimusic.ui.screens.home package it.hamy.muza.ui.screens.home
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.animation.core.LinearEasing import androidx.compose.animation.core.LinearEasing
@@ -31,33 +31,33 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import it.vfsfitvnm.compose.persist.persistList import it.hamy.compose.persist.persistList
import it.vfsfitvnm.vimusic.Database import it.hamy.muza.Database
import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets import it.hamy.muza.LocalPlayerAwareWindowInsets
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder import it.hamy.muza.LocalPlayerServiceBinder
import it.vfsfitvnm.vimusic.R import it.hamy.muza.R
import it.vfsfitvnm.vimusic.enums.SongSortBy import it.hamy.muza.enums.SongSortBy
import it.vfsfitvnm.vimusic.enums.SortOrder import it.hamy.muza.enums.SortOrder
import it.vfsfitvnm.vimusic.models.Song import it.hamy.muza.models.Song
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState import it.hamy.muza.ui.components.LocalMenuState
import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScrollToTop import it.hamy.muza.ui.components.themed.FloatingActionsContainerWithScrollToTop
import it.vfsfitvnm.vimusic.ui.components.themed.Header import it.hamy.muza.ui.components.themed.Header
import it.vfsfitvnm.vimusic.ui.components.themed.HeaderIconButton import it.hamy.muza.ui.components.themed.HeaderIconButton
import it.vfsfitvnm.vimusic.ui.components.themed.InHistoryMediaItemMenu import it.hamy.muza.ui.components.themed.InHistoryMediaItemMenu
import it.vfsfitvnm.vimusic.ui.items.SongItem import it.hamy.muza.ui.items.SongItem
import it.vfsfitvnm.vimusic.ui.styling.Dimensions import it.hamy.muza.ui.styling.Dimensions
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.hamy.muza.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.ui.styling.onOverlay import it.hamy.muza.ui.styling.onOverlay
import it.vfsfitvnm.vimusic.ui.styling.overlay import it.hamy.muza.ui.styling.overlay
import it.vfsfitvnm.vimusic.ui.styling.px import it.hamy.muza.ui.styling.px
import it.vfsfitvnm.vimusic.utils.asMediaItem import it.hamy.muza.utils.asMediaItem
import it.vfsfitvnm.vimusic.utils.center import it.hamy.muza.utils.center
import it.vfsfitvnm.vimusic.utils.color import it.hamy.muza.utils.color
import it.vfsfitvnm.vimusic.utils.forcePlayAtIndex import it.hamy.muza.utils.forcePlayAtIndex
import it.vfsfitvnm.vimusic.utils.rememberPreference import it.hamy.muza.utils.rememberPreference
import it.vfsfitvnm.vimusic.utils.semiBold import it.hamy.muza.utils.semiBold
import it.vfsfitvnm.vimusic.utils.songSortByKey import it.hamy.muza.utils.songSortByKey
import it.vfsfitvnm.vimusic.utils.songSortOrderKey import it.hamy.muza.utils.songSortOrderKey
@ExperimentalFoundationApi @ExperimentalFoundationApi
@ExperimentalAnimationApi @ExperimentalAnimationApi
@@ -102,7 +102,7 @@ fun HomeSongs(
key = "header", key = "header",
contentType = 0 contentType = 0
) { ) {
Header(title = "Songs") { Header(title = "Песни") {
HeaderIconButton( HeaderIconButton(
icon = R.drawable.trending, icon = R.drawable.trending,
color = if (sortBy == SongSortBy.PlayTime) colorPalette.text else colorPalette.textDisabled, color = if (sortBy == SongSortBy.PlayTime) colorPalette.text else colorPalette.textDisabled,

Some files were not shown because too many files have changed in this diff Show More