From 3908400418a40d8ebd4ac7432615a4fd96180e73 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Tue, 11 Jul 2023 11:44:11 -0600 Subject: [PATCH] playback: use playsong settings Use PlaySong modeling within settings too. This largely completes the PlaySong refactor and fully adds the ability to play songs by themselves as an option. Resolves #424. --- CHANGELOG.md | 4 + .../java/org/oxycblt/auxio/IntegerTable.kt | 20 ++-- .../auxio/detail/AlbumDetailFragment.kt | 8 +- .../auxio/detail/ArtistDetailFragment.kt | 12 +-- .../oxycblt/auxio/detail/DetailViewModel.kt | 26 +++-- .../auxio/detail/GenreDetailFragment.kt | 12 +-- .../auxio/detail/PlaylistDetailFragment.kt | 2 +- .../org/oxycblt/auxio/home/HomeViewModel.kt | 7 +- .../auxio/home/list/SongListFragment.kt | 2 +- .../org/oxycblt/auxio/playback/PlaySong.kt | 22 ++--- .../auxio/playback/PlaybackSettings.kt | 94 +++++++------------ .../auxio/playback/PlaybackViewModel.kt | 29 +----- .../oxycblt/auxio/search/SearchFragment.kt | 2 +- .../oxycblt/auxio/search/SearchViewModel.kt | 7 +- app/src/main/res/values-ar-rIQ/strings.xml | 8 +- app/src/main/res/values-be/strings.xml | 14 +-- app/src/main/res/values-cs/strings.xml | 14 +-- app/src/main/res/values-de/strings.xml | 14 +-- app/src/main/res/values-es/strings.xml | 14 +-- app/src/main/res/values-fi/strings.xml | 12 +-- app/src/main/res/values-fr/strings.xml | 14 +-- app/src/main/res/values-gl/strings.xml | 14 +-- app/src/main/res/values-hi/strings.xml | 14 +-- app/src/main/res/values-hr/strings.xml | 14 +-- app/src/main/res/values-hu/strings.xml | 14 +-- app/src/main/res/values-in/strings.xml | 14 +-- app/src/main/res/values-it/strings.xml | 14 +-- app/src/main/res/values-iw/strings.xml | 14 +-- app/src/main/res/values-ja/strings.xml | 14 +-- app/src/main/res/values-ko/strings.xml | 14 +-- app/src/main/res/values-lt/strings.xml | 14 +-- app/src/main/res/values-nl/strings.xml | 14 +-- app/src/main/res/values-pa/strings.xml | 14 +-- app/src/main/res/values-pl/strings.xml | 14 +-- app/src/main/res/values-pt-rBR/strings.xml | 14 +-- app/src/main/res/values-pt-rPT/strings.xml | 14 +-- app/src/main/res/values-ro/strings.xml | 14 +-- app/src/main/res/values-ru/strings.xml | 14 +-- app/src/main/res/values-sv/strings.xml | 14 +-- app/src/main/res/values-tr/strings.xml | 14 +-- app/src/main/res/values-uk/strings.xml | 14 +-- app/src/main/res/values-zh-rCN/strings.xml | 14 +-- app/src/main/res/values/settings.xml | 63 +++++++------ app/src/main/res/values/strings.xml | 15 +-- .../main/res/xml/preferences_personalize.xml | 20 ++-- 45 files changed, 337 insertions(+), 392 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca2830c2b..57d03abe2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,12 +4,16 @@ #### What's New - Menus have been refreshed with a cleaner look +- Added option to play song by itself in library/item details #### What's Improved - Made "Add to Playlist" action more prominent in selection toolbar - Fixed notification album covers not updating after changing the cover aspect ratio setting +#### What's Fixed +- Playlist detail view now respects playback settings + #### Dev/Meta - Unified navigation graph diff --git a/app/src/main/java/org/oxycblt/auxio/IntegerTable.kt b/app/src/main/java/org/oxycblt/auxio/IntegerTable.kt index 98f1b5739..68240c781 100644 --- a/app/src/main/java/org/oxycblt/auxio/IntegerTable.kt +++ b/app/src/main/java/org/oxycblt/auxio/IntegerTable.kt @@ -65,14 +65,14 @@ object IntegerTable { const val REPEAT_MODE_ALL = 0xA101 /** RepeatMode.TRACK */ const val REPEAT_MODE_TRACK = 0xA102 - /** PlaybackMode.IN_GENRE */ - const val PLAYBACK_MODE_IN_GENRE = 0xA103 - /** PlaybackMode.IN_ARTIST */ - const val PLAYBACK_MODE_IN_ARTIST = 0xA104 - /** PlaybackMode.IN_ALBUM */ - const val PLAYBACK_MODE_IN_ALBUM = 0xA105 - /** PlaybackMode.ALL_SONGS */ - const val PLAYBACK_MODE_ALL_SONGS = 0xA106 + // /** PlaybackMode.IN_GENRE (No longer used but still reserved) */ + // const val PLAYBACK_MODE_IN_GENRE = 0xA103 + // /** PlaybackMode.IN_ARTIST (No longer used but still reserved) */ + // const val PLAYBACK_MODE_IN_ARTIST = 0xA104 + // /** PlaybackMode.IN_ALBUM (No longer used but still reserved) */ + // const val PLAYBACK_MODE_IN_ALBUM = 0xA105 + // /** PlaybackMode.ALL_SONGS (No longer used but still reserved) */ + // const val PLAYBACK_MODE_ALL_SONGS = 0xA106 /** MusicMode.SONGS */ const val MUSIC_MODE_SONGS = 0xA10B /** MusicMode.ALBUMS */ @@ -121,8 +121,8 @@ object IntegerTable { const val COVER_MODE_MEDIA_STORE = 0xA11D /** CoverMode.Quality */ const val COVER_MODE_QUALITY = 0xA11E - /** PlaySong.Itself */ - const val PLAY_SONG_ITSELF = 0xA11F + /** PlaySong.ByItself */ + const val PLAY_SONG_BY_ITSELF = 0xA11F /** PlaySong.FromAll */ const val PLAY_SONG_FROM_ALL = 0xA120 /** PlaySong.FromAlbum */ diff --git a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt index f2f3f0543..61ac27fef 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt @@ -44,7 +44,6 @@ import org.oxycblt.auxio.list.Menu import org.oxycblt.auxio.list.Sort import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Music -import org.oxycblt.auxio.music.MusicMode import org.oxycblt.auxio.music.MusicParent import org.oxycblt.auxio.music.MusicViewModel import org.oxycblt.auxio.music.PlaylistDecision @@ -180,12 +179,7 @@ class AlbumDetailFragment : } override fun onRealClick(item: Song) { - val mode = detailModel.playbackMode - if (mode != null) { - playbackModel.play(item, detailModel.playbackMode ?: MusicMode.ALBUMS) - } else { - playbackModel.playFromAlbum(item) - } + playbackModel.play(item, detailModel.playInAlbumWith) } override fun onOpenMenu(item: Song, anchor: View) { diff --git a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt index 973a524ce..1673da9de 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt @@ -179,17 +179,7 @@ class ArtistDetailFragment : override fun onRealClick(item: Music) { when (item) { is Album -> detailModel.showAlbum(item) - is Song -> { - val playbackMode = detailModel.playbackMode - if (playbackMode != null) { - playbackModel.play(item, playbackMode) - } else { - // When configured to play from the selected item, we already have an Artist - // to play from. - playbackModel.playFromArtist( - item, unlikelyToBeNull(detailModel.currentArtist.value)) - } - } + is Song -> playbackModel.play(item, detailModel.playInArtistWith) else -> error("Unexpected datatype: ${item::class.simpleName}") } } diff --git a/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt b/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt index ee1fe4df0..422a02764 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt @@ -42,18 +42,19 @@ import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Genre import org.oxycblt.auxio.music.Music -import org.oxycblt.auxio.music.MusicMode import org.oxycblt.auxio.music.MusicRepository import org.oxycblt.auxio.music.MusicSettings import org.oxycblt.auxio.music.Playlist import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.info.ReleaseType import org.oxycblt.auxio.music.metadata.AudioProperties +import org.oxycblt.auxio.playback.PlaySong import org.oxycblt.auxio.playback.PlaybackSettings import org.oxycblt.auxio.util.Event import org.oxycblt.auxio.util.MutableEvent import org.oxycblt.auxio.util.logD import org.oxycblt.auxio.util.logW +import org.oxycblt.auxio.util.unlikelyToBeNull /** * [ViewModel] that manages the Song, Album, Artist, and Genre detail views. Keeps track of the @@ -115,6 +116,10 @@ constructor( currentAlbum.value?.let { refreshAlbumList(it, true) } } + /** The [PlaySong] instructions to use when playing a [Song] from [Album] details. */ + val playInAlbumWith + get() = playbackSettings.inParentPlaybackMode ?: PlaySong.FromAlbum + // --- ARTIST --- private val _currentArtist = MutableStateFlow(null) @@ -139,6 +144,10 @@ constructor( currentArtist.value?.let { refreshArtistList(it, true) } } + /** The [PlaySong] instructions to use when playing a [Song] from [Artist] details. */ + val playInArtistWith + get() = playbackSettings.inParentPlaybackMode ?: PlaySong.FromArtist(currentArtist.value) + // --- GENRE --- private val _currentGenre = MutableStateFlow(null) @@ -163,6 +172,10 @@ constructor( currentGenre.value?.let { refreshGenreList(it, true) } } + /** The [PlaySong] instructions to use when playing a [Song] from [Genre] details. */ + val playInGenreWith + get() = playbackSettings.inParentPlaybackMode ?: PlaySong.FromGenre(currentGenre.value) + // --- PLAYLIST --- private val _currentPlaylist = MutableStateFlow(null) @@ -186,12 +199,11 @@ constructor( val editedPlaylist: StateFlow?> get() = _editedPlaylist - /** - * The [MusicMode] to use when playing a [Song] from the UI, or null to play from the currently - * shown item. - */ - val playbackMode: MusicMode? - get() = playbackSettings.inParentPlaybackMode + /** The [PlaySong] instructions to use when playing a [Song] from [Genre] details. */ + val playInPlaylistWith + get() = + playbackSettings.inParentPlaybackMode + ?: PlaySong.FromPlaylist(unlikelyToBeNull(currentPlaylist.value)) init { musicRepository.addUpdateListener(this) diff --git a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt index f71fcb48d..4a62f16a8 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt @@ -177,17 +177,7 @@ class GenreDetailFragment : override fun onRealClick(item: Music) { when (item) { is Artist -> detailModel.showArtist(item) - is Song -> { - val playbackMode = detailModel.playbackMode - if (playbackMode != null) { - playbackModel.play(item, playbackMode) - } else { - // When configured to play from the selected item, we already have an Genre - // to play from. - playbackModel.playFromGenre( - item, unlikelyToBeNull(detailModel.currentGenre.value)) - } - } + is Song -> playbackModel.play(item, detailModel.playInGenreWith) else -> error("Unexpected datatype: ${item::class.simpleName}") } } diff --git a/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt index 632352075..5365e9fba 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt @@ -229,7 +229,7 @@ class PlaylistDetailFragment : } override fun onRealClick(item: Song) { - playbackModel.playFromPlaylist(item, unlikelyToBeNull(detailModel.currentPlaylist.value)) + playbackModel.play(item, detailModel.playInPlaylistWith) } override fun onPickUp(viewHolder: RecyclerView.ViewHolder) { diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt index 4e471758a..538dcb541 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt @@ -34,6 +34,7 @@ import org.oxycblt.auxio.music.MusicRepository import org.oxycblt.auxio.music.MusicSettings import org.oxycblt.auxio.music.Playlist import org.oxycblt.auxio.music.Song +import org.oxycblt.auxio.playback.PlaySong import org.oxycblt.auxio.playback.PlaybackSettings import org.oxycblt.auxio.util.Event import org.oxycblt.auxio.util.MutableEvent @@ -102,9 +103,9 @@ constructor( val playlistsInstructions: Event get() = _playlistsInstructions - /** The [MusicMode] to use when playing a [Song] from the UI. */ - val playbackMode: MusicMode - get() = playbackSettings.inListPlaybackMode + /** The [PlaySong] instructions to use when playing a [Song]. */ + val playWith + get() = playbackSettings.playInListWith /** * A list of [MusicMode] corresponding to the current [Tab] configuration, excluding invisible diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt index 9f2539c3f..74bd833ed 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt @@ -137,7 +137,7 @@ class SongListFragment : } override fun onRealClick(item: Song) { - playbackModel.play(item, homeModel.playbackMode) + playbackModel.play(item, homeModel.playWith) } override fun onOpenMenu(item: Song, anchor: View) { diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaySong.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaySong.kt index 2e14aa928..a4983f97b 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaySong.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaySong.kt @@ -22,18 +22,13 @@ import org.oxycblt.auxio.IntegerTable import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Genre import org.oxycblt.auxio.music.Music -import org.oxycblt.auxio.music.MusicMode import org.oxycblt.auxio.music.Playlist sealed interface PlaySong { val intCode: Int - object ByItself : PlaySong { - override val intCode = IntegerTable.PLAY_SONG_ITSELF - } - object FromAll : PlaySong { - override val intCode = IntegerTable.PLAY_SONG_ITSELF + override val intCode = IntegerTable.PLAY_SONG_FROM_ALL } object FromAlbum : PlaySong { @@ -52,19 +47,14 @@ sealed interface PlaySong { override val intCode = IntegerTable.PLAY_SONG_FROM_PLAYLIST } - companion object { - fun fromPlaybackModeTemporary(playbackMode: MusicMode) = - when (playbackMode) { - MusicMode.SONGS -> FromAll - MusicMode.ALBUMS -> FromAlbum - MusicMode.ARTISTS -> FromArtist(null) - MusicMode.GENRES -> FromGenre(null) - MusicMode.PLAYLISTS -> throw IllegalStateException() - } + object ByItself : PlaySong { + override val intCode = IntegerTable.PLAY_SONG_BY_ITSELF + } + companion object { fun fromIntCode(intCode: Int, inner: Music?): PlaySong? = when (intCode) { - IntegerTable.PLAY_SONG_ITSELF -> ByItself + IntegerTable.PLAY_SONG_BY_ITSELF -> ByItself IntegerTable.PLAY_SONG_FROM_ALBUM -> FromAlbum IntegerTable.PLAY_SONG_FROM_ARTIST -> if (inner is Artist?) { diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackSettings.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackSettings.kt index bfd97dbd4..481db77c5 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackSettings.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackSettings.kt @@ -24,7 +24,6 @@ import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import org.oxycblt.auxio.IntegerTable import org.oxycblt.auxio.R -import org.oxycblt.auxio.music.MusicMode import org.oxycblt.auxio.playback.replaygain.ReplayGainMode import org.oxycblt.auxio.playback.replaygain.ReplayGainPreAmp import org.oxycblt.auxio.settings.Settings @@ -46,16 +45,13 @@ interface PlaybackSettings : Settings { val replayGainMode: ReplayGainMode /** The current ReplayGain pre-amp configuration. */ var replayGainPreAmp: ReplayGainPreAmp + /** How to play a song from a general list of songs, specified by [PlaySong] */ + val playInListWith: PlaySong /** - * What type of MusicParent to play from when a Song is played from a list of other items. Null - * if to play from all Songs. + * How to play a song from a parent item, specified by [PlaySong]. Null if to delegate to the UI + * context. */ - val inListPlaybackMode: MusicMode - /** - * What type of MusicParent to play from when a Song is played from within an item (ex. like in - * the detail view). Null if to play from the item it was played in. - */ - val inParentPlaybackMode: MusicMode? + val inParentPlaybackMode: PlaySong? /** Whether to keep shuffle on when playing a new Song. */ val keepShuffle: Boolean /** Whether to rewind when the skip previous button is pressed before skipping back. */ @@ -75,18 +71,20 @@ interface PlaybackSettings : Settings { class PlaybackSettingsImpl @Inject constructor(@ApplicationContext context: Context) : Settings.Impl(context), PlaybackSettings { - override val inListPlaybackMode: MusicMode + override val playInListWith: PlaySong get() = - MusicMode.fromIntCode( + PlaySong.fromIntCode( sharedPreferences.getInt( - getString(R.string.set_key_in_list_playback_mode), Int.MIN_VALUE)) - ?: MusicMode.SONGS + getString(R.string.set_key_play_in_list_with), Int.MIN_VALUE), + null) + ?: PlaySong.FromAll - override val inParentPlaybackMode: MusicMode? + override val inParentPlaybackMode: PlaySong? get() = - MusicMode.fromIntCode( + PlaySong.fromIntCode( sharedPreferences.getInt( - getString(R.string.set_key_in_parent_playback_mode), Int.MIN_VALUE)) + getString(R.string.set_key_play_in_list_with), Int.MIN_VALUE), + null) override val barAction: ActionMode get() = @@ -132,65 +130,44 @@ class PlaybackSettingsImpl @Inject constructor(@ApplicationContext context: Cont get() = sharedPreferences.getBoolean(getString(R.string.set_key_repeat_pause), false) override fun migrate() { - // "Use alternate notification action" was converted to an ActionMode setting in 3.0.0. - if (sharedPreferences.contains(OLD_KEY_ALT_NOTIF_ACTION)) { - logD("Migrating $OLD_KEY_ALT_NOTIF_ACTION") - - val mode = - if (sharedPreferences.getBoolean(OLD_KEY_ALT_NOTIF_ACTION, false)) { - ActionMode.SHUFFLE - } else { - ActionMode.REPEAT - } - - sharedPreferences.edit { - putInt(getString(R.string.set_key_notif_action), mode.intCode) - remove(OLD_KEY_ALT_NOTIF_ACTION) - apply() - } - } - - // PlaybackMode was converted to MusicMode in 3.0.0 - - fun Int.migratePlaybackMode() = + // MusicMode was converted to PlaySong in 3.2.0 + fun Int.migrateMusicMode() = when (this) { - // Convert PlaybackMode into MusicMode - IntegerTable.PLAYBACK_MODE_ALL_SONGS -> MusicMode.SONGS - IntegerTable.PLAYBACK_MODE_IN_ARTIST -> MusicMode.ARTISTS - IntegerTable.PLAYBACK_MODE_IN_ALBUM -> MusicMode.ALBUMS - IntegerTable.PLAYBACK_MODE_IN_GENRE -> MusicMode.GENRES + IntegerTable.MUSIC_MODE_SONGS -> PlaySong.FromAll + IntegerTable.MUSIC_MODE_ALBUMS -> PlaySong.FromAlbum + IntegerTable.MUSIC_MODE_ARTISTS -> PlaySong.FromArtist(null) + IntegerTable.MUSIC_MODE_GENRES -> PlaySong.FromGenre(null) else -> null } - if (sharedPreferences.contains(OLD_KEY_LIB_PLAYBACK_MODE)) { - logD("Migrating $OLD_KEY_LIB_PLAYBACK_MODE") + if (sharedPreferences.contains(OLD_KEY_LIB_MUSIC_PLAYBACK_MODE)) { + logD("Migrating $OLD_KEY_LIB_MUSIC_PLAYBACK_MODE") val mode = sharedPreferences - .getInt(OLD_KEY_LIB_PLAYBACK_MODE, IntegerTable.PLAYBACK_MODE_ALL_SONGS) - .migratePlaybackMode() - ?: MusicMode.SONGS + .getInt(OLD_KEY_LIB_MUSIC_PLAYBACK_MODE, Int.MIN_VALUE) + .migrateMusicMode() sharedPreferences.edit { - putInt(getString(R.string.set_key_in_list_playback_mode), mode.intCode) - remove(OLD_KEY_LIB_PLAYBACK_MODE) + putInt( + getString(R.string.set_key_play_in_list_with), mode?.intCode ?: Int.MIN_VALUE) + remove(OLD_KEY_LIB_MUSIC_PLAYBACK_MODE) apply() } } - if (sharedPreferences.contains(OLD_KEY_DETAIL_PLAYBACK_MODE)) { - logD("Migrating $OLD_KEY_DETAIL_PLAYBACK_MODE") + if (sharedPreferences.contains(OLD_KEY_DETAIL_MUSIC_PLAYBACK_MODE)) { + logD("Migrating $OLD_KEY_DETAIL_MUSIC_PLAYBACK_MODE") val mode = sharedPreferences - .getInt(OLD_KEY_DETAIL_PLAYBACK_MODE, Int.MIN_VALUE) - .migratePlaybackMode() + .getInt(OLD_KEY_DETAIL_MUSIC_PLAYBACK_MODE, Int.MIN_VALUE) + .migrateMusicMode() sharedPreferences.edit { putInt( - getString(R.string.set_key_in_parent_playback_mode), - mode?.intCode ?: Int.MIN_VALUE) - remove(OLD_KEY_DETAIL_PLAYBACK_MODE) + getString(R.string.set_key_play_in_parent_with), mode?.intCode ?: Int.MIN_VALUE) + remove(OLD_KEY_DETAIL_MUSIC_PLAYBACK_MODE) apply() } } @@ -216,8 +193,7 @@ class PlaybackSettingsImpl @Inject constructor(@ApplicationContext context: Cont } private companion object { - const val OLD_KEY_ALT_NOTIF_ACTION = "KEY_ALT_NOTIF_ACTION" - const val OLD_KEY_LIB_PLAYBACK_MODE = "KEY_SONG_PLAY_MODE2" - const val OLD_KEY_DETAIL_PLAYBACK_MODE = "auxio_detail_song_play_mode" + const val OLD_KEY_LIB_MUSIC_PLAYBACK_MODE = "auxio_library_playback_mode" + const val OLD_KEY_DETAIL_MUSIC_PLAYBACK_MODE = "auxio_detail_playback_mode" } } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt index de2d08f2c..d0472e556 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt @@ -30,7 +30,6 @@ import kotlinx.coroutines.launch import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Genre -import org.oxycblt.auxio.music.MusicMode import org.oxycblt.auxio.music.MusicParent import org.oxycblt.auxio.music.MusicRepository import org.oxycblt.auxio.music.MusicSettings @@ -180,10 +179,6 @@ constructor( // --- PLAYING FUNCTIONS --- - fun play(song: Song, playbackMode: MusicMode) { - play(song, PlaySong.fromPlaybackModeTemporary(playbackMode)) - } - fun play(song: Song, with: PlaySong) { logD("Playing $song with $with") playWithImpl(song, with, isImplicitlyShuffled()) @@ -203,10 +198,6 @@ constructor( playFromAllImpl(null, true) } - fun playFromAlbum(song: Song) { - playFromAlbumImpl(song, isImplicitlyShuffled()) - } - /** * Play a [Song] from one of it's [Artist]s. * @@ -229,34 +220,20 @@ constructor( playFromGenreImpl(song, genre, isImplicitlyShuffled()) } - /** - * Play a [Song] from one of it's [Playlist]s. - * - * @param song The [Song] to play. - * @param playlist The [Playlist] to play from. Must be linked to the [Song]. - */ - fun playFromPlaylist(song: Song, playlist: Playlist) { - playFromPlaylistImpl(song, playlist, isImplicitlyShuffled()) - } - private fun isImplicitlyShuffled() = playbackManager.queue.isShuffled && playbackSettings.keepShuffle private fun playWithImpl(song: Song, with: PlaySong, shuffled: Boolean) { when (with) { - is PlaySong.ByItself -> playItselfImpl(song, shuffled) is PlaySong.FromAll -> playFromAllImpl(song, shuffled) is PlaySong.FromAlbum -> playFromAlbumImpl(song, shuffled) is PlaySong.FromArtist -> playFromArtistImpl(song, with.which, shuffled) is PlaySong.FromGenre -> playFromGenreImpl(song, with.which, shuffled) is PlaySong.FromPlaylist -> playFromPlaylistImpl(song, with.which, shuffled) + is PlaySong.ByItself -> playItselfImpl(song, shuffled) } } - private fun playItselfImpl(song: Song, shuffled: Boolean) { - playImpl(song, listOf(song), shuffled) - } - private fun playFromAllImpl(song: Song?, shuffled: Boolean) { playImpl(song, null, shuffled) } @@ -296,6 +273,10 @@ constructor( playImpl(song, playlist, shuffled) } + private fun playItselfImpl(song: Song, shuffled: Boolean) { + playImpl(song, listOf(song), shuffled) + } + private fun startPlaybackDecision(decision: PlaybackDecision) { val existing = _playbackDecision.flow.value if (existing != null) { diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt index 9156488cc..3a7a71233 100644 --- a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt @@ -174,7 +174,7 @@ class SearchFragment : ListFragment() { override fun onRealClick(item: Music) { when (item) { - is Song -> playbackModel.play(item, searchModel.playbackMode) + is Song -> playbackModel.play(item, searchModel.playWith) is Album -> detailModel.showAlbum(item) is Artist -> detailModel.showArtist(item) is Genre -> detailModel.showGenre(item) diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt index 8a3aa5a1c..9bf784010 100644 --- a/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt @@ -38,6 +38,7 @@ import org.oxycblt.auxio.music.MusicRepository import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.device.DeviceLibrary import org.oxycblt.auxio.music.user.UserLibrary +import org.oxycblt.auxio.playback.PlaySong import org.oxycblt.auxio.playback.PlaybackSettings import org.oxycblt.auxio.util.logD @@ -63,9 +64,9 @@ constructor( val searchResults: StateFlow> get() = _searchResults - /** The [MusicMode] to use when playing a [Song] from the UI. */ - val playbackMode: MusicMode - get() = playbackSettings.inListPlaybackMode + /** The [PlaySong] instructions to use when playing a [Song]. */ + val playWith + get() = playbackSettings.playInListWith init { musicRepository.addUpdateListener(this) diff --git a/app/src/main/res/values-ar-rIQ/strings.xml b/app/src/main/res/values-ar-rIQ/strings.xml index fbb6ab074..801ac1b80 100644 --- a/app/src/main/res/values-ar-rIQ/strings.xml +++ b/app/src/main/res/values-ar-rIQ/strings.xml @@ -23,9 +23,9 @@ يتم التشغيل الان تشغيل عشوائي - تشغيل من جميع الاغاني - تشغيل من البوم - تشغيل من فنان + تشغيل من جميع الاغاني + تشغيل من البوم + تشغيل من فنان طابور شغل الاغنية التالية أضف إلى الطابور @@ -63,7 +63,7 @@ تفضيل الالبوم ديناميكي سلوك - عند اختيار اغنية + عند اختيار اغنية تذكر الخلط إبقاء وضع الخلط عند تشغيل اغنية جديدة تشجيع قبل التخطي للخلف diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index 8ff87a97e..efb419463 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -12,7 +12,7 @@ Дададзены ў чаргу Распрацавана Аляксандрам Кейпхартам Карыстальніцкае дзеянне панэлі прайгравання - Прайграць з альбома + Прайграць з альбома Коска (,) Плюс (+) Амперсанд (&) @@ -234,15 +234,15 @@ Перайсці да наступнага Рэжым паўтору Паводзіны - Пры прайграванні з бібліятэкі - Прайграць усе песні + Пры прайграванні з бібліятэкі + Прайграць усе песні Кіруйце загрузкай музыкі і малюнкаў Карыстальніцкае дзеянне апавяшчэння - Пры прайграванні з дэталяў прадмета - Гуляць з паказанага прадмета + Пры прайграванні з дэталяў прадмета + Гуляць з паказанага прадмета Ігнаруйце аўдыяфайлы, якія не з\'яўляюцца музыкай, напрыклад, падкасты - Гуляць ад выканаўцы - Гуляць з жанру + Гуляць ад выканаўцы + Гуляць з жанру Запамінаць перамешванне Уключайце перамешванне падчас прайгравання новай песні Кантэнт diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 68c3f3e4f..bd051766d 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -29,9 +29,9 @@ Právě hraje Přehrát Náhodně - Přehrát ze všech skladeb - Přehrát z alba - Přehrát od umělce + Přehrát ze všech skladeb + Přehrát z alba + Přehrát od umělce Fronta Přehrát další Přidat do fronty @@ -80,7 +80,7 @@ Přizpůsobení bez štítků Varování: Změna předzesilovače na vysokou kladnou hodnotu může u některých zvukových stop vést k příliš vysokým hlasitostem. Chování - Při přehrávání z knihovny + Při přehrávání z knihovny Zapamatovat si náhodné přehrávání Ponechat náhodné přehrávání při přehrávání nové skladby Přetočit před přeskočením zpět @@ -180,9 +180,9 @@ Free Lossless Audio Codec (FLAC) %d kbps %d Hz - Při přehrávání z podrobností o položce + Při přehrávání z podrobností o položce Spravovat, odkud by měla být načítána hudba - Přehrát ze zobrazené položky + Přehrát ze zobrazené položky Zobrazit vlastnosti Vlastnosti skladby Název souboru @@ -263,7 +263,7 @@ Přehrát vybrané Vybráno %d Náhodně přehrát vybrané - Přehrát z žánru + Přehrát z žánru Wiki %1$s, %2$s Obnovit diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 0321ffeec..00b9ac5dc 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -15,8 +15,8 @@ Aufsteigend Abspielen Zufällig - Von allen Lieder abspielen - Von Album abspielen + Von allen Lieder abspielen + Von Album abspielen Aktuelle Wiedergabe Warteschlange Als Nächstes abspielen @@ -56,7 +56,7 @@ Titel bevorzugen Album bevorzugen Personalisieren - Wenn ein Lied aus der Bibliothek abgespielt wird + Wenn ein Lied aus der Bibliothek abgespielt wird Zufällig-Einstellung merken Zufällig anlassen, wenn ein neues Lied abgespielt wird Zurückspulen, bevor das Lied zurück geändert wird @@ -153,8 +153,8 @@ Gesamtdauer: %s Abbrechen Warnung: Das Erhöhen der Vorverstärkung zu einem hohen positiven Wert könnte zu einer Übersteuerung bei einigen Audiospuren führen. - Wenn ein Lied aus den Elementdetails abgespielt wird - Vom dargestellten Element abspielen + Wenn ein Lied aus den Elementdetails abgespielt wird + Vom dargestellten Element abspielen Musikordner Verwalten, von wo die Musik geladen werden soll Modus @@ -233,7 +233,7 @@ Komma (,) Schrägstrich (/) Plus (+) - Vom Künstler abspielen + Vom Künstler abspielen Achtung: Verwenden dieser Einstellung könnte dazu führen, dass einige Tags fälschlicherweise interpretiert werden, als hätten sie mehrere Werte. Das kann gelöst werden, in dem vor ungewollte Trenner ein Backslash (\\) eingefügt wird. Nicht-Musik ausschließen Audio-Dateien, die keine Musik sind (wie Podcasts), ignorieren @@ -254,7 +254,7 @@ Ausgewählte abspielen Ausgewählte zufällig abspielen %d ausgewählt - Vom Genre abspielen + Vom Genre abspielen Wiki %1$s, %2$s Zurücksetzen diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index d1a76b43b..f46f63bdf 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -23,9 +23,9 @@ En reproducción Reproducir Mezcla - Reproducir todo - Reproducir por álbum - Reproducir por artista + Reproducir todo + Reproducir por álbum + Reproducir por artista Cola Reproducir siguiente Agregar a la cola @@ -63,7 +63,7 @@ Por álbum Preferir el álbum si se está en reproducción Comportamiento - Cuando se está reproduciendo de la biblioteca + Cuando se está reproduciendo de la biblioteca Recordar mezcla Mantener mezcla cuando se reproduce una nueva canción Rebobinar atrás @@ -149,7 +149,7 @@ Estadísticas de la biblioteca Ajuste sin etiquetas Advertencia: Cambiar el pre-amp a un valor alto puede resultar en picos en algunas pistas de audio. - Reproducir desde el elemento que se muestra + Reproducir desde el elemento que se muestra Modo Excluir La músicano se cargará de las carpetas que añadas. @@ -171,7 +171,7 @@ Monitorizando la librería de música Monitorizando cambios en tu librería de música… Audio ogg - Cuando se reproduce desde los detalles + Cuando se reproduce desde los detalles Fecha de añadido Propiedades de la canción Frecuencia de muestreo @@ -258,7 +258,7 @@ Nodo aleatorio seleccionado %d seleccionado Reproducir los seleccionados - Reproducir desde el género + Reproducir desde el género Wiki %1$s, %2$s Restablecer diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 21f8693dd..d99365815 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -68,12 +68,12 @@ Muuta kirjastovälilehtien näkyvyyttä ja järjestystä Siirry seuraavaan Kertaustila - Kirjastosta toistettaessa - Kohteen tiedoista toistettaessa + Kirjastosta toistettaessa + Kohteen tiedoista toistettaessa Muista sekoitus - Toista kaikista kappaleista - Toista albumilta - Toista tyylilajista + Toista kaikista kappaleista + Toista albumilta + Toista tyylilajista Moniarvoerottimet Ohita äänitiedostot, jotka eivät ole musiikkia, kuten podcastit Ja-merkki (&) @@ -238,7 +238,7 @@ Tuntematon tyylilaji Vihreä Musiikkia ei toisteta - Toista esittäjältä + Toista esittäjältä Ohita muu kuin musiikki Palauta aiemmin tallennettu toiston tila (jos olemassa) Musiikkia ei ladata valitsemistasi kansioista. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 4a6cb7884..599471f22 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -169,9 +169,9 @@ Recharger la bibliothèque musicale chaque fois qu\'elle change (nécessite une notification persistante) Esperluette (&) Playlist - Lors de la lecture à partir des détails de l\'élément + Lors de la lecture à partir des détails de l\'élément Gardez la lecture aléatoire lors de la lecture d\'une nouvelle chanson - Lire à partir de l\'élément affiché + Lire à partir de l\'élément affiché N\'oubliez pas de mélanger Contrôlez le chargement de la musique et des images Musique @@ -185,18 +185,18 @@ Couvertures originales (téléchargement rapide) Configurer le son et le comportement de lecture Listes de lecture - Lors de la lecture depuis la bibliothèque + Lors de la lecture depuis la bibliothèque Séparateurs multi-valeurs Rechargement automatique - Jouer à partir de toutes les chansons - Jouer de l\'artiste - Jouer à partir du genre + Jouer à partir de toutes les chansons + Jouer de l\'artiste + Jouer à partir du genre Virgule (,) Point-virgule (;) Ignorer les fichiers audio qui ne sont pas de la musique, tels que les podcasts Avertissement : L\'utilisation de ce paramètre peut entraîner l\'interprétation incorrecte de certaines balises comme ayant plusieurs valeurs. Vous pouvez résoudre ce problème en préfixant les caractères de séparation indésirables avec une barre oblique inverse (\\). Exclure non-musique - Lire depuis l\'album + Lire depuis l\'album Barre oblique (/) Plus (+) Vider l\'état de lecture précédemment enregistré (si il existe) diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 1ba5cedaf..b00782948 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -8,7 +8,7 @@ Axustes Claro Escuro - Cando se está a reproducir dende a biblioteca + Cando se está a reproducir dende a biblioteca Artista Un reproductor de música simple e racional para android. Sinxelo @@ -82,17 +82,17 @@ Recarga a biblioteca de música cando cambia (require unha notificación persistente) Acción da notificación personalizada Saltar ao seguinte - Reproducir dende xénero + Reproducir dende xénero Manter a mestura ao reproducir unha canción nova Contido Modo de repetición Comportamento - Reproducir dende artista + Reproducir dende artista Lembrar a mestura Música - Reproducir dende o elemento que se mostra - Reproducir dende todas as cancións - Reproducir dende álbum + Reproducir dende o elemento que se mostra + Reproducir dende todas as cancións + Reproducir dende álbum Recarga automática Ignorar arquivos de audio que non sexan música, como os pódcasts Todas as cancións @@ -138,7 +138,7 @@ Pestanas de biblioteca Cambiar a visibilidade e a orde das pestanas da biblioteca Acción personalizada da barra de reprodución - Cando se reproduce dende os detalles + Cando se reproduce dende os detalles Controla como se carga a música e as imaxes Separadores de varios valores Configura caracteres que denotan múltiples valores da etiqueta diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index b4dc11d12..61b83f80b 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -63,7 +63,7 @@ अगला चलाएं फ़ाइल का नाम लायब्रेरी टैब्स - एल्बम से चलाएं + एल्बम से चलाएं सामग्री %d चयनित प्रारूप @@ -85,8 +85,8 @@ गतिशील लुक और फील अतिरिक्त UI तत्वों पर गोल कोनों को सक्षम करें (एल्बम कवर को गोल करने की आवश्यकता है) - दिखाए गए आइटम से चलाएँ - लाइब्रेरी से चलाते समय + दिखाए गए आइटम से चलाएँ + लाइब्रेरी से चलाते समय संगीत लाइब्रेरी को फिर से लोड करें जब भी यह बदलता है (स्थाई नोटीफिकेशन की आवश्यकता होती है) ऑडियो फ़ाइलों को अनदेखा करें जो संगीत नहीं हैं, जैसे कि पॉडकास्ट लाइव संकलन @@ -96,7 +96,7 @@ प्लेलिस्ट प्लेलिस्टें गोल मोड - सभी गीतों से चलाएं + सभी गीतों से चलाएं %s हटाएँ\? इसे पूर्ववत नहीं किया जा सकता। लोड किए गए गाने: %d अवरोही @@ -109,7 +109,7 @@ UI नियंत्रण और व्यवहार अनुकूलित करें कलाकार लोड किए गए: %d कस्टम प्लेबैक बार एक्शन - आइटम विवरण से चलाते समय + आइटम विवरण से चलाते समय लाइव एल्बम रीमिक्स एल्बम लाइव EP @@ -165,8 +165,8 @@ गीत के गुणधर्म डिस्पले कस्टम नोटीफिकेशन एक्शन - कलाकार से चलाएं - शैली से चलाएं + कलाकार से चलाएं + शैली से चलाएं फेरबदल याद रखें नया गाना बजाते समय फेरबदल करते रहें मल्टी-मूल्य विभाजक diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 6be80a5d0..8ab7b06c6 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -82,9 +82,9 @@ Prilagođavanje s oznakama Prilagođavanje bez oznaka Upozorenje: Postavljanje pretpojačala na visoke razine može uzrokovati vrhunce tonova u nekim zvučnim zapisima. - Kada se reproducira iz zbirke - Kada se reproducira iz detalja predmeta - Reproduciraj iz svih pjesama + Kada se reproducira iz zbirke + Kada se reproducira iz detalja predmeta + Reproduciraj iz svih pjesama Aktualiziraj glazbu Ponovo učitaj glazbenu biblioteku, koristeći predmemorirane oznake kada je to moguće Mape glazbe @@ -191,10 +191,10 @@ Premotaj prije preskakanja natrag Spremi trenutno stanje reprodukcije Preskoči na sljedeću pjesmu - Reproduciraj iz prikazanog predmeta + Reproduciraj iz prikazanog predmeta Zapamti miješanje glazbe Vrati prethodno spremljeno stanje reprodukcije (ako postoji) - Reproduciraj iz albuma + Reproduciraj iz albuma Pauziraj čim se pjesma ponovi Premotaj prije vraćanja na prethodnu pjesmu Reproduciraj ili pauziraj @@ -230,7 +230,7 @@ Sakrij suradnike Isključeno Isključi sve što nije glazba - Reproduciraj iz izvođača + Reproduciraj iz izvođača Visoka kvaliteta Brzo Zanemari sve audio datoteke koje nisu glazba, npr. podcast datoteke @@ -249,7 +249,7 @@ Odabrano: %d Promiješaj odabrane Reproduciraj odabrane - Reproduciraj iz žanra + Reproduciraj iz žanra Wiki %1$s, %2$s Resetiraj diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 2717d6868..f8997a950 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -145,8 +145,8 @@ Kiválasztottak keverése UI vezérlők és viselkedés testreszabása A könyvtárfülek láthatóságának és sorrendjének módosítása - A tétel részleteiből történő lejátszáskor - Lejátszás albumból + A tétel részleteiből történő lejátszáskor + Lejátszás albumból A zene és a képek betöltésének vezérlése Képek Időtartam @@ -175,8 +175,8 @@ Alaphelyzet Állapot törölve Fejlesztő Alexander Capehart - Lejátszás az összes dalból - Lejátszás műfajból + Lejátszás az összes dalból + Lejátszás műfajból Tartalom A zenei könyvtár újratöltése, ha változik (állandó értesítést igényel) Zene könyvtárak @@ -212,8 +212,8 @@ Mód Free Lossless Audio Codec (FLAC) Beállítás címkékkel - A könyvtárból történő lejátszáskor - Lejátszás a megjelenő elemről + A könyvtárból történő lejátszáskor + Lejátszás a megjelenő elemről %d kbps Betöltött műfaj: %d Zene betöltés @@ -250,7 +250,7 @@ Playlista átnevezve Playlista törölve Ugrás a következőre - Lejátszás előadótól + Lejátszás előadótól Zene A nem zenei fájlok, például podcastok figyelmen kívül hagyása Több címkeértéket jelölő karakterek konfigurálása diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index fdd5eb194..525ed9115 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -93,8 +93,8 @@ Pre-amp diterapkan ke penyesuaian yang ada selama pemutaran Penyesuaian dengan tag Peringatan: Mengubah pre-amp ke nilai positif yang tinggi dapat mengakibatkan puncak pada beberapa trek audio. - Putar dari item yang ditampilkan - Putar dari semua lagu + Putar dari item yang ditampilkan + Putar dari semua lagu Tetap mengacak saat memutar lagu baru Jeda pada pengulangan Putar balik sebelum melompat ke belakang @@ -133,17 +133,17 @@ Album yang dimuat: %d Artis yang dimuat: %d Utamakan album jika ada yang diputar - Saat diputar dari pustaka - Putar dari album + Saat diputar dari pustaka + Putar dari album Ubah mode pengulangan Gambar Artis untuk %s - Saat diputar dari keterangan item + Saat diputar dari keterangan item Musik tidak akan dimuat dari folder yang Anda tambahkan. Hapus lagu antrian ini Hapus kueri pencarian Penyesuaian tanpa tag Folder musik - Putar dari artis + Putar dari artis Mode Auxio memerlukan izin untuk membaca perpustakaan musik Anda Loncat ke lagu terakhir @@ -193,7 +193,7 @@ Kualitas tinggi Titik koma (;) Wiki - Putar dari aliran + Putar dari aliran Aliran Sampul album Nonaktif diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 84ee01c8f..9d8dee9cb 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -23,9 +23,9 @@ Ora in riproduzione Riproduci Mescola - Riproduci da tutte le canzoni - Riproduci dall\'album - Riproduci dall\'artista + Riproduci da tutte le canzoni + Riproduci dall\'album + Riproduci dall\'artista Coda Riproduci successivo Accoda @@ -66,7 +66,7 @@ Preferisci album Preferisci l\'album se in riproduzione Comportamento - Quando in riproduzione dalla libreria + Quando in riproduzione dalla libreria Mantieni mescolamento Mantiene il mescolamento anche se una nuova canzone è selezionata Riavvolgi prima di saltare indietro @@ -154,14 +154,14 @@ +%.1f dB %d Hz Caricamento libreria musicale… (%1$d/%2$d) - Quando in riproduzione dai dettagli dell\'elemento + Quando in riproduzione dai dettagli dell\'elemento Attenzione: impostare valore positivi alti può provocare distorsioni su alcune tracce. Regolazione senza tag Mescola Mescola tutto Regolazione con tag Il pre-amp è applicato alla regolazione esistente durante la riproduzione - Riproduci dall\'elemento mostrato + Riproduci dall\'elemento mostrato Gestisci le cartelle da dove caricare la musica Cartelle musica Escludi @@ -258,7 +258,7 @@ Mescola selezionati Riproduci selezionati %d selezionati - Riproduci dal genere + Riproduci dal genere Wiki %1$s, %2$s Ripristina diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index f3b64bdc3..e439eaf5a 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -87,13 +87,13 @@ דילוג לבא מצב חזרה התנהגות - כאשר מנוגן מהספרייה - כאשר מנוגן מפרטי הפריט - ניגון מהפריט המוצג - ניגון מכל השירים - ניגון מאלבום - ניגון מהאומן - ניגון מסוגה + כאשר מנוגן מהספרייה + כאשר מנוגן מפרטי הפריט + ניגון מהפריט המוצג + ניגון מכל השירים + ניגון מאלבום + ניגון מהאומן + ניגון מסוגה לזכור ערבוב המשך ערבוב בעת הפעלת שיר חדש תוכן diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index d1b62413b..b571ec42e 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -54,7 +54,7 @@ カラースキーム 黒基調 再生状態を復元 - 表示されたアイテムから再生 + 表示されたアイテムから再生 再生停止 ファイル名 @@ -151,11 +151,11 @@ ヘッドセット接続時に常時再生開始 (動作しない機種あり) ヘッドセット自動再生 リプレイゲイン - すべての曲から再生 - アルバムから再生 - アーティストから再生 - ライブラリからの再生時 - アイテム詳細からの再生時 + すべての曲から再生 + アルバムから再生 + アーティストから再生 + ライブラリからの再生時 + アイテム詳細からの再生時 音楽以外を除外 ここに追加したフォルダからのみ音楽が読み込まれます。 前回保存された再生状態がある場合、再生状態を復元 @@ -227,7 +227,7 @@ 次ヘスキップ 繰り返しモード - ジャンルから再生 + ジャンルから再生 新しい曲の再生時にシャフルを保持 ダイナミック 再生状態を解除できません diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 7460a0012..2de3ff1bd 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -27,9 +27,9 @@ 지금 재생 중 재생 셔플 - 모든 곡에서 재생 - 앨범에서 재생 - 아티스트에서 재생 + 모든 곡에서 재생 + 앨범에서 재생 + 아티스트에서 재생 대기열 다음 곡 재생 대기열에 추가 @@ -78,7 +78,7 @@ 태그 없이 조정 주의: 프리앰프를 높게 설정하면 일부 소리 트랙이 왜곡될 수 있습니다. 동작 - 라이브러리에서 재생할 때 + 라이브러리에서 재생할 때 무작위 재생 기억 새로운 곡을 재생할 때 무작위 재생 유지 이전 곡으로 가기 전에 되감기 @@ -178,7 +178,7 @@ DJ믹스 이퀄라이저 셔플 - 표시된 항목에서 재생 + 표시된 항목에서 재생 음악 라이브러리를 불러오는 중… 재생 상태 지우기 재생 상태 복원 @@ -238,7 +238,7 @@ 음악 라이브러리를 불러오는 중… (%1$d/%2$d) 장르 경고: 이 설정을 사용하면 일부 태그가 여러 값을 갖는 것으로 잘못 해석될 수 있습니다. 구분자로 읽히지 않도록 하려면 해당 구분자 앞에 백슬래시 (\\)를 붙입니다. - 항목 세부 정보에서 재생할 때 + 항목 세부 정보에서 재생할 때 음악 라이브러리의 변경사항을 추적하는 중… 다음 곡으로 건너뛰기 팟캐스트와 같이 음악이 아닌 소리 파일 무시 @@ -256,7 +256,7 @@ %d 선택됨 재설정 위키 - 장르에서 재생 + 장르에서 재생 %1$s, %2$s 리플레이게인 사운드 및 재생 동작 구성 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 946097b67..673981837 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -155,8 +155,8 @@ Persukti prieš šokant atgal Persukti atgal prieš peršokant į ankstesnę dainą Pauzė ant kartojamo - Kai grojant iš bibliotekos - Kai grojant iš elemento detalių + Kai grojant iš bibliotekos + Kai grojant iš elemento detalių Pašalinti aplanką Žanras Ieškokite savo bibliotekoje… @@ -174,10 +174,10 @@ Muzika nebus įkeliama iš pridėtų aplankų jūs pridėsite. Įtraukti Pašalinti šią dainą - Groti iš visų dainų - Groti iš parodyto elemento - Groti iš albumo - Groti iš atlikėjo + Groti iš visų dainų + Groti iš parodyto elemento + Groti iš albumo + Groti iš atlikėjo Išvalyta būsena Neįtraukti Muzika bus įkeliama iš aplankų jūs pridėsite. @@ -252,7 +252,7 @@ %d Pasirinkta Groti pasirinktą Pasirinktas maišymas - Groti iš žanro + Groti iš žanro Viki %1$s, %2$s Nustatyti iš naujo diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index e27184725..4e1cd3ec0 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -17,9 +17,9 @@ Oplopend Afspelen Shuffle - Speel van alle nummers - Speel af van album - Speel van artiest + Speel van alle nummers + Speel af van album + Speel van artiest Nu afspelen Wachtrij Afspelen als volgende @@ -48,7 +48,7 @@ Gebruikt een afternatief notification action Audio Gedrag - Bij het afspelen vanuit de bibliotheek + Bij het afspelen vanuit de bibliotheek Onthoud shuffle Houd shuffle aan bij het afspelen van een nieuw nummer Terugspoelen voordat je terugspoelt @@ -149,7 +149,7 @@ Aanpassing met tags Aanpassing zonder tags Er speelt geen muziek - Bij het afspelen van item details + Bij het afspelen van item details Ronde modus Afgeronde hoeken inschakelen voor extra UI-elementen (vereist dat albumhoezen zijn afgerond) Staat gerestaureerd @@ -158,7 +158,7 @@ Headset automatisch afspelen ReplayGain Waarschuwing: Als u de voorversterker op een hoge positieve waarde zet, kan dit bij sommige audiotracks tot pieken leiden. - Afspelen vanaf getoond item + Afspelen vanaf getoond item Afspeelstatus herstellen Herstel de eerder opgeslagen afspeelstatus (indien aanwezig) Kan status niet herstellen @@ -271,7 +271,7 @@ Verwijderen Scheiders met meerdere waarden Verberg bijdragers - Speel vanuit genre + Speel vanuit genre Datum toegevoegd %1$s, %2$s Afspeellijst %d diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index d8ad7d851..97817e254 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -112,13 +112,13 @@ ਅਗਲੇ \'ਤੇ ਜਾਓ ਦੁਹਰਾਓ ਮੋਡ ਵਿਵਹਾਰ - ਜਦੋਂ ਲਾਇਬ੍ਰੇਰੀ ਤੋਂ ਚਲਾਉਂਦੇ ਹਾਂ - ਜਦੋਂ ਆਈਟਮ ਦੇ ਵੇਰਵਿਆਂ ਤੋਂ ਚਲਾਉਂਦੇ ਹਾਂ - ਦਿਖਾਈ ਗਈ ਆਈਟਮ ਤੋਂ ਚਲਾਓ - ਸਾਰੇ ਗੀਤਾਂ ਤੋਂ ਚਲਾਓ - ਐਲਬਮ ਤੋਂ ਚਲਾਓ - ਕਲਾਕਾਰ ਤੋਂ ਖੇਡੋ - ਸ਼ੈਲੀ ਤੋਂ ਖੇਡੋ + ਜਦੋਂ ਲਾਇਬ੍ਰੇਰੀ ਤੋਂ ਚਲਾਉਂਦੇ ਹਾਂ + ਜਦੋਂ ਆਈਟਮ ਦੇ ਵੇਰਵਿਆਂ ਤੋਂ ਚਲਾਉਂਦੇ ਹਾਂ + ਦਿਖਾਈ ਗਈ ਆਈਟਮ ਤੋਂ ਚਲਾਓ + ਸਾਰੇ ਗੀਤਾਂ ਤੋਂ ਚਲਾਓ + ਐਲਬਮ ਤੋਂ ਚਲਾਓ + ਕਲਾਕਾਰ ਤੋਂ ਖੇਡੋ + ਸ਼ੈਲੀ ਤੋਂ ਖੇਡੋ ਸ਼ਫਲ ਯਾਦ ਰੱਖੋ ਗੀਤ ਦੁਹਰਾਉਣ ਤੇ ਰੋਕੋ ਰੀਪਲੇਅ-ਗੇਨ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index dbce6c061..fc0c20794 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -132,8 +132,8 @@ Korektor Rozmiar Brak folderów - Odtwórz wszystkie utwory - Odtwórz album + Odtwórz wszystkie utwory + Odtwórz album Automatycznie odtwórz muzykę po podłączeniu słuchawek (może nie działać na wszystkich urządzeniach) Odśwież muzykę Odśwież bibliotekę muzyczną używając tagów z pamięci cache, jeśli są dostępne @@ -157,7 +157,7 @@ Tryb powtarzania Ustawienie ReplayGain Preferuj album, jeśli jest odtwarzany - Odtwarzanie z widoku biblioteki + Odtwarzanie z widoku biblioteki Zapisz stan odtwarzania Przecinek (,) Średnik (;) @@ -215,8 +215,8 @@ Regulacja w oparciu o tagi Regulacja bez tagów Wzmocnienie dźwięku przez preamplifier jest nakładane na wcześniej ustawione wzmocnienie podczas odtwarzania - Odtwarzanie z widoku szczegółowego - Odtwórz tylko wybrane + Odtwarzanie z widoku szczegółowego + Odtwórz tylko wybrane Zatrzymaj odtwarzanie, kiedy utwór się powtórzy Muzyka będzie importowana tylko z wybranych folderów. Znaki oddzielające wartości @@ -237,7 +237,7 @@ Kontynuuj odtwarzanie losowe po wybraniu nowego utworu Zaimportowane utwory: %d Ignoruj pliki audio które nie są utworami muzycznymi (np. podcasty) - Odtwórz od wykonawcy + Odtwórz od wykonawcy Wyklucz inne pliki dźwiękowe Okładki albumów Wyłączone @@ -262,7 +262,7 @@ Resetuj Wiki Funkcje - Odtwórz z gatunku + Odtwórz z gatunku Wyczyść pamięć cache z tagami i zaimportuj ponownie bibliotekę (wolniej, ale dokładniej) Zaimportuj ponownie bibliotekę diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 845157184..af9052aa1 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -163,8 +163,8 @@ Exibição Ativa cantos arredondados em elementos adicionais da interface do usuário Modo de normalização de volume (ReplayGain) - Reproduzir a partir do item mostrado - Reproduzir de todas as músicas + Reproduzir a partir do item mostrado + Reproduzir de todas as músicas Preferir álbum Prefira o álbum se estiver tocando Recarregamento automático @@ -183,7 +183,7 @@ Monitorando alterações na sua biblioteca de músicas… Abas da biblioteca Gênero - Reproduzir do artista + Reproduzir do artista Restaura a lista de reprodução salva anteriormente (se houver) Ajuste em faixas com metadados Lista limpa @@ -193,7 +193,7 @@ Monitorando a biblioteca de músicas Cantos arredondados Pular para o próximo - Reproduzir do álbum + Reproduzir do álbum Salvar lista de reprodução Limpar lista de reprodução Restaurar lista de reprodução @@ -211,8 +211,8 @@ Single remix Conteúdo Faixa - Ao tocar da biblioteca - Ao tocar a partir dos detalhes do item + Ao tocar da biblioteca + Ao tocar a partir dos detalhes do item Mixtapes Mixtape Remixes @@ -259,7 +259,7 @@ Wiki Redefinir %1$s, %2$s - Tocar a partir do gênero + Tocar a partir do gênero Configure o comportamento de som e reprodução Imagens Mude o tema e as cores do aplicativo diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index ff1aa5b04..d56b5eee1 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -71,8 +71,8 @@ %d Álbuns %d Álbuns - Reproduzir a partir do item mostrado - Reproduzir do álbum + Reproduzir a partir do item mostrado + Reproduzir do álbum Imagem do artista para %s Gênero desconhecido Nenhuma faixa @@ -93,7 +93,7 @@ Qualidade alta Ação da barra de reprodução personalizada Modo de repetição - Reproduzir do artista + Reproduzir do artista Pausar na repetição O Auxio precisa de permissão para ler a sua biblioteca de músicas Sem pastas @@ -188,7 +188,7 @@ Estratégia do ganho de repetição Preferir álbum O pré-amplificador é aplicado ao ajuste existente durante a reprodução - Reproduzir de todas as músicas + Reproduzir de todas as músicas Pausa quando uma música se repete Limpe o estado de reprodução salvo anteriormente (se houver) Restaurar o estado de reprodução @@ -239,8 +239,8 @@ Mostrar apenas artistas que foram creditados diretamente no álbum (funciona melhor em músicas com metadados completos) Preferir faixa Pré-amplificação da normalização de volume - Ao tocar a partir dos detalhes do item - Tocar a partir do gênero + Ao tocar a partir dos detalhes do item + Tocar a partir do gênero Retrocede a música antes de voltar para a anterior Recarregar música %1$s, %2$s @@ -250,7 +250,7 @@ Nenhuma lista pode ser restaurada Ícone do Auxio Aleatorizar tudo - Ao tocar da biblioteca + Ao tocar da biblioteca Singles Single Recarrega a biblioteca de músicas usando metadados salvos em cache quando possível diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 35c85858b..ed696e932 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -140,23 +140,23 @@ Descrescător Selecție aleatorie aleasă Treceți la următoarea - Redă de la artist - Redă din genul + Redă de la artist + Redă din genul Resetează Wiki Vizualizați și controlați redarea muzicii Schimbă vizibilitatea și ordinea taburilor din bibliotecă Taburi din bibliotecă Nu uita de shuffle - Redă din toate melodiile - În timpul redării din bibliotecă - Redă de la articolul afișat + Redă din toate melodiile + În timpul redării din bibliotecă + Redă de la articolul afișat Conținut Acțiune de notificare personalizată Menține funcția shuffle activată la redarea unei melodii noi Personalizarea acțiunii bării de redare Modul de repetare - Redă din album - În timpul redării de la detaliile articolului + Redă din album + În timpul redării de la detaliile articolului Comportament \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 2dfc2830c..543b0fde7 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -23,9 +23,9 @@ Сейчас играет Играть Перемешать - Играть все композиции - Играть альбом - Играть исполнителя + Играть все композиции + Играть альбом + Играть исполнителя Очередь Играть далее Добавить в очередь @@ -65,7 +65,7 @@ По альбому Предпочитать по альбому, если он воспроизводится Поведение - При воспроизведении из библиотеки + При воспроизведении из библиотеки Запоминать перемешивание Запоминать режим перемешивания для новых треков Сначала перемотать трек @@ -146,8 +146,8 @@ Перемешать Перемешать всё ОК - При воспроизведении из сведений - Воспроизведение с показанного элемента + При воспроизведении из сведений + Воспроизведение с показанного элемента Номер песни Битрейт Диск @@ -264,7 +264,7 @@ Вики Сбросить %1$s,%2$s - Играть жанр + Играть жанр Поведение Выравнивание громкости ReplayGain Музыка diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index a00ec585d..8b958539b 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -124,8 +124,8 @@ Hoppa till nästa Upprepningsmodus Beteende - När spelar från artikeluppgifter - Spela från genre + När spelar från artikeluppgifter + Spela från genre Komma ihåg blandningsstatus Behåll blandning på när spelar en ny låt Kontent @@ -141,11 +141,11 @@ Dölj medarbetare Skärm Bibliotekflikar - När spelar från biblioteket - Spela från visad artikel - Spela från alla låtar - Spela från konstnär - Spela från album + När spelar från biblioteket + Spela från visad artikel + Spela från alla låtar + Spela från konstnär + Spela från album Semikolon (;) Ladda om musikbiblioteket när det ändras (kräver permanent meddelande) Komma (,) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 073c463c3..3a7d65394 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -92,9 +92,9 @@ Etiketsiz ayarla Etiket ile ayarla Uyarı: Ön amfinin yüksek bir pozitif değere değiştirilmesi bazı ses parçalarında pik yapmaya neden olabilir. - Gösterilen öğeden çal - Tüm şarkılardan çal - Albümden çal + Gösterilen öğeden çal + Tüm şarkılardan çal + Albümden çal Müzik klasörleri Müzik yalnızca eklediğiniz klasörlerden yüklenecektir. %s Albümünün kapağı @@ -112,9 +112,9 @@ Kireç Sarı Turuncu - Kitaplıktan çalarken - Öğe ayrıntılarından çalarken - Sanatçıdan çal + Kitaplıktan çalarken + Öğe ayrıntılarından çalarken + Sanatçıdan çal Yüklenen sanatçılar: %d Yüklenen türler: %d %d Hz @@ -248,7 +248,7 @@ Eğik çizgi (/) Kuyruğu aç Tekrar kipi - Türden çal + Türden çal Podcast\'ler gibi müzik olmayan ses dosyalarını yok say Uyarı: Bu ayarın kullanılması bazı etiketlerin yanlışlıkla birden fazla değere sahip olarak yorumlanmasına neden olabilir. Bunu, istenmeyen ayırıcı karakterlerin önüne ters eğik çizgi (\\) koyarak çözebilirsiniz. Müzik olmayanları hariç tut diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 73f6bb64a..cc1d9cc8c 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -143,14 +143,14 @@ Режим повторення Режим Попередній підсилювач ReplayGain - Відтворити альбом - При відтворенні з бібліотеки + Відтворити альбом + При відтворенні з бібліотеки Віддавати перевагу альбому, якщо він відтворюється Стан відтворення очищено Використовувати повністю чорну тему Показувати лише тих виконавців, які безпосередньо зазначені в альбомі (найкраще працює в добре позначених бібліотеках) Увага: Встановлення високих позитивних значень попереднього підсилювача може призвести до спотворення звуку в деяких піснях. - При відтворенні з деталей предмета + При відтворенні з деталей предмета Очистити кеш тегів і повністю перезавантажити музичну бібліотеку (повільніше, але ефективніше) Автоматичне перезавантаження Перезавантажувати бібліотеку при виявленні змін (потрібне постійне сповіщення) @@ -164,10 +164,10 @@ Відстеження змін в музичній бібліотеці… Власна дія для панелі відтворення Регулювання без тегів - Відтворення з показаного елемента + Відтворення з показаного елемента Продовжити перемішування після вибору нової пісні - Відтворити виконавця - Відтворити жанр + Відтворити виконавця + Відтворити жанр Перемотати назад перед відтворенням попередньої пісні Зберегти поточний стан відтворення Пересканувати музику @@ -187,7 +187,7 @@ Перемотайте на початок пісні перед відтворенням попередньої Увімкнути заокруглені кути на додаткових елементах інтерфейсу (потрібно заокруглення обкладинок альбомів) Попередній підсилювач застосовується до наявних налаштувань під час відтворення - Відтворити всі пісні + Відтворити всі пісні Перезавантажити музичну бібліотеку, використовуючи кешовані теги, коли це можливо Скісна риска (/) Плюс (+) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index d75168b77..cb041474b 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -23,9 +23,9 @@ 正在播放 播放 随机 - 从全部歌曲开始播放 - 从专辑开始播放 - 从艺术家播放 + 从全部歌曲开始播放 + 从专辑开始播放 + 从艺术家播放 播放队列 作为下一首播放 加入播放队列 @@ -65,7 +65,7 @@ 偏好专辑 如果已有专辑正在播放则优先增益专辑 行为 - 从音乐库中选择播放时 + 从音乐库中选择播放时 记住随机模式 播放新曲目时保留随机播放模式 切换上一曲前先倒带 @@ -162,9 +162,9 @@ 已加载艺术家数量:%d 已加载流派数量:%d 总计时长:%s - 从展示的项目播放 + 从展示的项目播放 仅从您添加的目录中加载音乐。 - 从项目详情中选择播放时 + 从项目详情中选择播放时 不会从您添加的目录中加载音乐。 高级音乐编码 (AAC) 已加载专辑数量:%d @@ -252,7 +252,7 @@ 随机播放所选 播放所选 选中了 %d 首 - 按流派播放 + 按流派播放 Wiki %1$s, %2$s 重置 diff --git a/app/src/main/res/values/settings.xml b/app/src/main/res/values/settings.xml index f3c956766..87004a171 100644 --- a/app/src/main/res/values/settings.xml +++ b/app/src/main/res/values/settings.xml @@ -27,8 +27,8 @@ auxio_pre_amp_with auxio_pre_amp_without - auxio_library_playback_mode - auxio_detail_playback_mode + auxio_play_in_list_with + auxio_play_in_parent_with KEY_KEEP_SHUFFLE KEY_PREV_REWIND KEY_LOOP_PAUSE @@ -106,34 +106,38 @@ @integer/action_mode_shuffle - - @string/set_playback_mode_songs - @string/set_playback_mode_artist - @string/set_playback_mode_album - @string/set_playback_mode_genre + + @string/set_play_song_from_all + @string/set_play_song_from_artist + @string/set_play_song_from_album + @string/set_play_song_from_genre + @string/set_play_song_by_itself - - @integer/music_mode_songs - @integer/music_mode_artist - @integer/music_mode_album - @integer/music_mode_genre + + @integer/play_song_from_all + @integer/play_song_from_album + @integer/play_song_from_artist + @integer/play_song_from_genre + @integer/play_song_itself - - @string/set_playback_mode_none - @string/set_playback_mode_songs - @string/set_playback_mode_artist - @string/set_playback_mode_album - @string/set_playback_mode_genre + + @string/set_play_song_none + @string/set_play_song_from_all + @string/set_play_song_from_artist + @string/set_play_song_from_album + @string/set_play_song_from_genre + @string/set_play_song_by_itself - - @integer/music_mode_none - @integer/music_mode_songs - @integer/music_mode_artist - @integer/music_mode_album - @integer/music_mode_genre + + @integer/play_song_none + @integer/play_song_from_all + @integer/play_song_from_album + @integer/play_song_from_artist + @integer/play_song_from_genre + @integer/play_song_itself @@ -152,11 +156,12 @@ 1 2 - -2147483648 - 0xA108 - 0xA109 - 0xA10A - 0xA10B + -2147483648 + 0xA11F + 0xA120 + 0xA121 + 0xA122 + 0xA123 0xA111 0xA112 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d610c1984..0e47fc0f1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -208,13 +208,14 @@ Skip to next Repeat mode Behavior - When playing from the library - When playing from item details - Play from shown item - Play from all songs - Play from album - Play from artist - Play from genre + When playing from the library + When playing from item details + Play from shown item + Play from all songs + Play from album + Play from artist + Play from genre + Play song by itself Remember shuffle Keep shuffle on when playing a new song diff --git a/app/src/main/res/xml/preferences_personalize.xml b/app/src/main/res/xml/preferences_personalize.xml index dca8a8dfb..a9f3b9b64 100644 --- a/app/src/main/res/xml/preferences_personalize.xml +++ b/app/src/main/res/xml/preferences_personalize.xml @@ -29,19 +29,19 @@