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 9fb0b25ed..8dc4bb400 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt @@ -76,6 +76,7 @@ class AlbumDetailFragment : override val listModel: ListViewModel by activityViewModels() override val musicModel: MusicViewModel by activityViewModels() override val playbackModel: PlaybackViewModel by activityViewModels() + // Information about what album to display is initially within the navigation arguments // as a UID, as that is the only safe way to parcel an album. private val args: AlbumDetailFragmentArgs by navArgs() diff --git a/app/src/main/java/org/oxycblt/auxio/list/Sort.kt b/app/src/main/java/org/oxycblt/auxio/list/Sort.kt index 8a7203182..013c498d2 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/Sort.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/Sort.kt @@ -165,6 +165,8 @@ data class Sort(val mode: Mode, val direction: Direction) { val intCode: Int /** The item ID of this sort mode in menu resources. */ val itemId: Int + /** The string resource of the human-readable name of this sort mode. */ + val stringRes: Int /** * Get a [Comparator] that sorts [Song]s according to this [Mode]. @@ -223,6 +225,9 @@ data class Sort(val mode: Mode, val direction: Direction) { override val itemId: Int get() = R.id.option_sort_name + override val stringRes: Int + get() = R.string.lbl_name + override fun getSongComparator(direction: Direction) = compareByDynamic(direction, BasicComparator.SONG) @@ -251,6 +256,9 @@ data class Sort(val mode: Mode, val direction: Direction) { override val itemId: Int get() = R.id.option_sort_album + override val stringRes: Int + get() = R.string.lbl_album + override fun getSongComparator(direction: Direction): Comparator = MultiComparator( compareByDynamic(direction, BasicComparator.ALBUM) { it.album }, @@ -271,6 +279,9 @@ data class Sort(val mode: Mode, val direction: Direction) { override val itemId: Int get() = R.id.option_sort_artist + override val stringRes: Int + get() = R.string.lbl_artist + override fun getSongComparator(direction: Direction): Comparator = MultiComparator( compareByDynamic(direction, ListComparator.ARTISTS) { it.artists }, @@ -300,6 +311,9 @@ data class Sort(val mode: Mode, val direction: Direction) { override val itemId: Int get() = R.id.option_sort_year + override val stringRes: Int + get() = R.string.lbl_date + override fun getSongComparator(direction: Direction): Comparator = MultiComparator( compareByDynamic(direction, NullableComparator.DATE_RANGE) { it.album.dates }, @@ -322,6 +336,9 @@ data class Sort(val mode: Mode, val direction: Direction) { override val itemId: Int get() = R.id.option_sort_duration + override val stringRes: Int + get() = R.string.lbl_duration + override fun getSongComparator(direction: Direction): Comparator = MultiComparator( compareByDynamic(direction) { it.durationMs }, compareBy(BasicComparator.SONG)) @@ -357,6 +374,9 @@ data class Sort(val mode: Mode, val direction: Direction) { override val itemId: Int get() = R.id.option_sort_count + override val stringRes: Int + get() = R.string.lbl_song_count + override fun getAlbumComparator(direction: Direction): Comparator = MultiComparator( compareByDynamic(direction) { it.songs.size }, compareBy(BasicComparator.ALBUM)) @@ -388,6 +408,9 @@ data class Sort(val mode: Mode, val direction: Direction) { override val itemId: Int get() = R.id.option_sort_disc + override val stringRes: Int + get() = R.string.lbl_disc + override fun getSongComparator(direction: Direction): Comparator = MultiComparator( compareByDynamic(direction, NullableComparator.DISC) { it.disc }, @@ -407,6 +430,9 @@ data class Sort(val mode: Mode, val direction: Direction) { override val itemId: Int get() = R.id.option_sort_track + override val stringRes: Int + get() = R.string.lbl_track + override fun getSongComparator(direction: Direction): Comparator = MultiComparator( compareBy(NullableComparator.DISC) { it.disc }, @@ -427,6 +453,9 @@ data class Sort(val mode: Mode, val direction: Direction) { override val itemId: Int get() = R.id.option_sort_date_added + override val stringRes: Int + get() = R.string.lbl_date_added + override fun getSongComparator(direction: Direction): Comparator = MultiComparator( compareByDynamic(direction) { it.dateAdded }, compareBy(BasicComparator.SONG)) diff --git a/app/src/main/java/org/oxycblt/auxio/list/menu/MenuItemAdapter.kt b/app/src/main/java/org/oxycblt/auxio/list/menu/MenuItemAdapter.kt index 1fd336c34..d5b5158f4 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/menu/MenuItemAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/menu/MenuItemAdapter.kt @@ -44,7 +44,7 @@ class MenuItemAdapter(private val listener: ClickableListListener) : } /** - * A [DialogRecyclerView.ViewHolder] that displays a list of menu options based on [MenuItem]. + * A [DialogRecyclerView.ViewHolder] that displays a [MenuItem]. * * @author Alexander Capehart (OxygenCobalt) */ @@ -54,7 +54,7 @@ class MenuItemViewHolder private constructor(private val binding: ItemMenuOption * Bind new data to this instance. * * @param item The new [MenuItem] to bind. - * @param listener An [ClickableListListener] to bind interactions to. + * @param listener A [ClickableListListener] to bind interactions to. */ fun bind(item: MenuItem, listener: ClickableListListener) { listener.bind(item, this) diff --git a/app/src/main/java/org/oxycblt/auxio/list/recycler/DialogRecyclerView.kt b/app/src/main/java/org/oxycblt/auxio/list/recycler/DialogRecyclerView.kt index 90a5786f6..9fc255ce1 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/recycler/DialogRecyclerView.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/recycler/DialogRecyclerView.kt @@ -22,7 +22,6 @@ import android.content.Context import android.util.AttributeSet import android.view.View import android.view.ViewGroup -import android.view.WindowInsets import androidx.annotation.AttrRes import androidx.core.view.isInvisible import androidx.core.view.updatePadding @@ -32,7 +31,6 @@ import com.google.android.material.divider.MaterialDivider import org.oxycblt.auxio.R import org.oxycblt.auxio.list.recycler.DialogRecyclerView.ViewHolder import org.oxycblt.auxio.util.getDimenPixels -import org.oxycblt.auxio.util.systemBarInsetsCompat /** * A [RecyclerView] intended for use in Dialogs, adding features such as: @@ -76,13 +74,6 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr invalidateDividers() } - override fun onApplyWindowInsets(insets: WindowInsets): WindowInsets { - // Update the RecyclerView's padding such that the bottom insets are applied - // while still preserving bottom padding. - updatePadding(bottom = insets.systemBarInsetsCompat.bottom) - return insets - } - override fun onScrolled(dx: Int, dy: Int) { super.onScrolled(dx, dy) // Scroll event occurred, need to update the dividers. diff --git a/app/src/main/java/org/oxycblt/auxio/list/sort/SortDialog.kt b/app/src/main/java/org/oxycblt/auxio/list/sort/SortDialog.kt new file mode 100644 index 000000000..39e14d199 --- /dev/null +++ b/app/src/main/java/org/oxycblt/auxio/list/sort/SortDialog.kt @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2023 Auxio Project + * SortDialog.kt is part of Auxio. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.oxycblt.auxio.list.sort + +import android.os.Bundle +import android.view.LayoutInflater +import androidx.core.view.updatePadding +import androidx.recyclerview.widget.RecyclerView +import org.oxycblt.auxio.R +import org.oxycblt.auxio.databinding.DialogSortBinding +import org.oxycblt.auxio.list.ClickableListListener +import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.adapter.UpdateInstructions +import org.oxycblt.auxio.ui.ViewBindingBottomSheetDialogFragment +import org.oxycblt.auxio.util.systemBarInsetsCompat + +abstract class SortDialog : + ViewBindingBottomSheetDialogFragment(), ClickableListListener { + private val modeAdapter = SortModeAdapter(this) + + abstract fun getInitialSort(): Sort + + abstract fun applyChosenSort(sort: Sort) + + abstract fun getModeChoices(): List + + override fun onCreateBinding(inflater: LayoutInflater) = DialogSortBinding.inflate(inflater) + + override fun onBindingCreated(binding: DialogSortBinding, savedInstanceState: Bundle?) { + super.onBindingCreated(binding, savedInstanceState) + + // --- UI SETUP --- + binding.root.setOnApplyWindowInsetsListener { v, insets -> + v.updatePadding(bottom = insets.systemBarInsetsCompat.bottom) + insets + } + + binding.sortModeRecycler.adapter = modeAdapter + + binding.sortCancel.setOnClickListener { dismiss() } + + binding.sortSave.setOnClickListener { + val initial = getInitialSort() + // FIXME: This won't work for the playlist sort dialog. + val mode = modeAdapter.currentMode ?: initial.mode + val direction = + when (binding.sortDirectionGroup.checkedButtonId) { + R.id.sort_direction_asc -> Sort.Direction.ASCENDING + R.id.sort_direction_dsc -> Sort.Direction.DESCENDING + else -> initial.direction + } + applyChosenSort(Sort(mode, direction)) + dismiss() + } + + // --- STATE SETUP --- + val initial = getInitialSort() + + modeAdapter.update(getModeChoices(), UpdateInstructions.Diff) + modeAdapter.setSelected(initial.mode) + + val directionId = + when (initial.direction) { + Sort.Direction.ASCENDING -> R.id.sort_direction_asc + Sort.Direction.DESCENDING -> R.id.sort_direction_dsc + } + binding.sortDirectionGroup.check(directionId) + } + + override fun onClick(item: Sort.Mode, viewHolder: RecyclerView.ViewHolder) { + modeAdapter.setSelected(item) + } +} diff --git a/app/src/main/java/org/oxycblt/auxio/list/sort/SortModeAdapter.kt b/app/src/main/java/org/oxycblt/auxio/list/sort/SortModeAdapter.kt new file mode 100644 index 000000000..d945a61ef --- /dev/null +++ b/app/src/main/java/org/oxycblt/auxio/list/sort/SortModeAdapter.kt @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2023 Auxio Project + * SortModeAdapter.kt is part of Auxio. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.oxycblt.auxio.list.sort + +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil +import org.oxycblt.auxio.databinding.ItemSortModeBinding +import org.oxycblt.auxio.list.ClickableListListener +import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.adapter.FlexibleListAdapter +import org.oxycblt.auxio.list.recycler.DialogRecyclerView +import org.oxycblt.auxio.util.context +import org.oxycblt.auxio.util.inflater + +/** + * A [FlexibleListAdapter] that displays a list of [Sort.Mode]s. + * + * @param listener A [ClickableListListener] to bind interactions to. + * @author Alexander Capehart (OxygenCobalt) + */ +class SortModeAdapter(private val listener: ClickableListListener) : + FlexibleListAdapter(SortModeViewHolder.DIFF_CALLBACK) { + /** The currently selected [Sort.Mode] item in this adapter. */ + var currentMode: Sort.Mode? = null + private set + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = + SortModeViewHolder.from(parent) + + override fun onBindViewHolder(holder: SortModeViewHolder, position: Int) { + throw NotImplementedError() + } + + override fun onBindViewHolder(holder: SortModeViewHolder, position: Int, payload: List) { + val mode = getItem(position) + if (payload.isEmpty()) { + holder.bind(mode, listener) + } + holder.setSelected(mode == currentMode) + } + + /** + * Select a new [Sort.Mode] option, unselecting the prior one. Does nothing if [mode] equals + * [currentMode]. + * + * @param mode The new [Sort.Mode] to select. Should be in the adapter data. + */ + fun setSelected(mode: Sort.Mode) { + if (mode == currentMode) return + val oldMode = currentList.indexOf(currentMode) + val newMode = currentList.indexOf(mode) + currentMode = mode + if (oldMode > -1) { + notifyItemChanged(oldMode, PAYLOAD_SELECTION_CHANGED) + } + notifyItemChanged(newMode, PAYLOAD_SELECTION_CHANGED) + } + + private companion object { + val PAYLOAD_SELECTION_CHANGED = Any() + } +} + +/** + * A [DialogRecyclerView.ViewHolder] that displays a [Sort.Mode]. + * + * @author Alexander Capehart (OxygenCobalt) + */ +class SortModeViewHolder private constructor(private val binding: ItemSortModeBinding) : + DialogRecyclerView.ViewHolder(binding.root) { + /** + * Bind new data to this instance. + * + * @param mode The new [Sort.Mode] to bind. + * @param listener A [ClickableListListener] to bind interactions to. + */ + fun bind(mode: Sort.Mode, listener: ClickableListListener) { + listener.bind(mode, this) + binding.sortRadio.text = binding.context.getString(mode.stringRes) + } + + /** + * Set if this view should be shown as selected or not. + * + * @param selected True if selected, false if not. + */ + fun setSelected(selected: Boolean) { + binding.sortRadio.isChecked = selected + } + + companion object { + fun from(parent: View) = + SortModeViewHolder(ItemSortModeBinding.inflate(parent.context.inflater)) + + val DIFF_CALLBACK = + object : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: Sort.Mode, newItem: Sort.Mode) = + oldItem == newItem + + override fun areContentsTheSame(oldItem: Sort.Mode, newItem: Sort.Mode) = + oldItem == newItem + } + } +} diff --git a/app/src/main/res/layout/dialog_menu.xml b/app/src/main/res/layout/dialog_menu.xml index b38f3938f..1a5a7a605 100644 --- a/app/src/main/res/layout/dialog_menu.xml +++ b/app/src/main/res/layout/dialog_menu.xml @@ -13,7 +13,7 @@ + android:layout_height="wrap_content"> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_music_dirs.xml b/app/src/main/res/layout/dialog_music_dirs.xml index 49458926a..fa48b8a9c 100644 --- a/app/src/main/res/layout/dialog_music_dirs.xml +++ b/app/src/main/res/layout/dialog_music_dirs.xml @@ -27,7 +27,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="@dimen/spacing_large" - android:layout_marginTop="@dimen/spacing_small" + android:layout_marginTop="@dimen/spacing_tiny" android:layout_marginEnd="@dimen/spacing_large" android:gravity="center" app:layout_constraintTop_toBottomOf="@+id/dirs_mode_header" diff --git a/app/src/main/res/layout/dialog_sort.xml b/app/src/main/res/layout/dialog_sort.xml new file mode 100644 index 000000000..4fa676852 --- /dev/null +++ b/app/src/main/res/layout/dialog_sort.xml @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_sort_mode.xml b/app/src/main/res/layout/item_sort_mode.xml new file mode 100644 index 000000000..91638968e --- /dev/null +++ b/app/src/main/res/layout/item_sort_mode.xml @@ -0,0 +1,29 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/sort_album.xml b/app/src/main/res/menu/sort_album.xml index 44f9744aa..2e172f698 100644 --- a/app/src/main/res/menu/sort_album.xml +++ b/app/src/main/res/menu/sort_album.xml @@ -16,6 +16,6 @@ android:title="@string/lbl_sort_asc" /> + android:title="@string/lbl_sort_dsc" /> \ No newline at end of file diff --git a/app/src/main/res/menu/sort_artist.xml b/app/src/main/res/menu/sort_artist.xml index 50ba847ba..796be63b3 100644 --- a/app/src/main/res/menu/sort_artist.xml +++ b/app/src/main/res/menu/sort_artist.xml @@ -22,6 +22,6 @@ android:title="@string/lbl_sort_asc" /> + android:title="@string/lbl_sort_dsc" /> \ No newline at end of file diff --git a/app/src/main/res/menu/sort_genre.xml b/app/src/main/res/menu/sort_genre.xml index ad5d920c8..0c525bbc9 100644 --- a/app/src/main/res/menu/sort_genre.xml +++ b/app/src/main/res/menu/sort_genre.xml @@ -25,6 +25,6 @@ android:title="@string/lbl_sort_asc" /> + android:title="@string/lbl_sort_dsc" /> \ No newline at end of file diff --git a/app/src/main/res/menu/toolbar_home.xml b/app/src/main/res/menu/toolbar_home.xml index 278206a03..7e27b3a49 100644 --- a/app/src/main/res/menu/toolbar_home.xml +++ b/app/src/main/res/menu/toolbar_home.xml @@ -45,7 +45,7 @@ android:title="@string/lbl_sort_asc" /> + android:title="@string/lbl_sort_dsc" /> diff --git a/app/src/main/res/navigation/inner.xml b/app/src/main/res/navigation/inner.xml index fa9520ec3..f782d8456 100644 --- a/app/src/main/res/navigation/inner.xml +++ b/app/src/main/res/navigation/inner.xml @@ -162,6 +162,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/values-ar-rIQ/strings.xml b/app/src/main/res/values-ar-rIQ/strings.xml index f2bf908ec..9dc9abb35 100644 --- a/app/src/main/res/values-ar-rIQ/strings.xml +++ b/app/src/main/res/values-ar-rIQ/strings.xml @@ -157,7 +157,7 @@ تشغيل كل الاغاني بشكل عشوائي حسنا اعادة الحالة - تنازلي + تنازلي عرض الخصائص مسح الحالة مباشر diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 8689e2dda..fcbf1ee96 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -61,7 +61,7 @@ تاريخ الإضافة فرز تصاعدياً - تنازلياً + تنازلياً يتم الآن تشغيل المُعادِل تشغيل diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index e49035776..1b783cd27 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -77,7 +77,7 @@ Ператасаваць Адмяніць Па ўзрастанні - Па змяншэнні + Па змяншэнні Гуляць далей Дадаць у чаргу Эквалайзер diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 89bc807df..d53bff062 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -279,7 +279,7 @@ Přehrávání Knihovna Perzistence - Sestupně + Sestupně Seznamy skladeb Obrázek seznamu skladeb pro %s Seznam skladeb diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 00b9ac5dc..09d153413 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -270,7 +270,7 @@ Ton und Wiedergabeverhalten konfigurieren Persistenz Lautstärkeanpassung ReplayGain - Absteigend + Absteigend Wiedergabelistenbild für %s Wiedergabeliste Wiedergabelisten diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index f46f63bdf..c07b03dc7 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -274,7 +274,7 @@ Cambiar el tema y los colores de la aplicación Personalizar los controles y el comportamiento de la interfaz de usuario Biblioteca - Descendente + Descendente Listas de reproducción Imagen de la lista de reproducción para %s Lista de reproducción diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index d99365815..93cb194d7 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -33,7 +33,7 @@ Levy Raita Lisäyspäivä - Laskevasti + Laskevasti Nyt toistetaan Taajuuskorjain Toista diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 4ee073246..822484268 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -157,7 +157,7 @@ Surveillance de votre bibliothèque musicale pour les changements… Couvertures arrondies Activer les coins arrondis sur des éléments d\'interface utilisateur supplémentaires (nécessite que les couvertures d\'album soient arrondies) - Descendant + Descendant Etat restauré Personnaliser les commandes et le comportement de l\'interface utilisateur Passer au suivant diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index b00782948..5c3288e6a 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -124,7 +124,7 @@ EP en directo EP remix Ascendente - Descendente + Descendente Ecualizador Aleatorio seleccionado Frecuencia de mostraxe diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 61b83f80b..bb80b279f 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -99,7 +99,7 @@ सभी गीतों से चलाएं %s हटाएँ\? इसे पूर्ववत नहीं किया जा सकता। लोड किए गए गाने: %d - अवरोही + अवरोही चयनित चलाएँ फेरबदल का चयन किया गया स्थिति साफ की गई diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 8ab7b06c6..1ce8b10cd 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -255,7 +255,7 @@ Resetiraj ReplayGain izjednačavanje glasnoće Mape - Silazni + Silazni Promijenite temu i boje aplikacije Prilagodite kontrole i ponašanje korisničkog sučelja Upravljajte učitavanjem glazbe i slika diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 254093dda..6c0b11c88 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -74,7 +74,7 @@ Remix EP Név Dátum - Csökkenő + Csökkenő Kiválasztott lejátszása Új lejátszólista Ismeretlen műfaj diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 0107cf837..483d5b02f 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -274,7 +274,7 @@ Persistenza Personalizza controlli e comportamento dell\'UI Configura comportamento di suono e riproduzione - Discendente + Discendente Playlist Playlist Ordinazione intelligente diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index e439eaf5a..31b5677fd 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -36,7 +36,7 @@ תאריך הוספה מיון עולה - יורד + יורד מושמע כעת איקוולייזר ניגון diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index b571ec42e..21849864b 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -60,7 +60,7 @@ ファイル名 追加した日付け サンプルレート - 降順 + 降順 再生 シャフル 選択曲をシャフル diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 2de3ff1bd..6716d4d77 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -270,7 +270,7 @@ 지속 동작 UI 제어 및 동작 커스텀 - 내림차순 + 내림차순 재생목록 재생목록 %s의 재생 목록 이미지 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index f3d63c113..f40489591 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -267,7 +267,7 @@ ReplayGain Aplankalai Pastovumas - Mažėjantis + Mažėjantis Teisingai surūšiuoti pavadinimus, kurie prasideda skaičiais arba žodžiais, tokiais kaip „the“ (geriausiai veikia su anglų kalbos muzika) Išmanusis rūšiavimas Grojaraštis diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 1f05558d8..82f0ffe92 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -90,7 +90,7 @@ കലാകാരനിലേക്ക് പോകുക സവിശേഷതകൾ കാണുക സ്ഥിതി സംരക്ഷിച്ചു - അവരോഹണം + അവരോഹണം സ്ഥിതി പുനഃസ്ഥാപിച്ചു വിക്കി സ്ഥിതി മായ്ച്ചു diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index a7e904bb3..5913008c0 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -201,7 +201,7 @@ %d album %d album - Synkende + Synkende Spor Dato tillagt Sorter diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 4e1cd3ec0..4d29de5df 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -246,7 +246,7 @@ Genre Ampersand (&) Bewerken - Aflopend + Aflopend Kan status niet wissen Afspeellijst-afbeelding voor %s Geen nummers diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 97817e254..8f748482d 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -75,7 +75,7 @@ ਐਂਡਰੌਇਡ ਲਈ ਇੱਕ ਸਰਲ, ਤਰਕਸੰਗਤ ਸੰਗੀਤ ਪਲੇਅਰ। ਖੋਜੋ ਗੀਤ ਦੀ ਗਿਣਤੀ - ਘਟਦੇ ਹੋਏ + ਘਟਦੇ ਹੋਏ ਚੁਣਿਆ ਹੋਇਆ ਚਲਾਓ ਕਲਾਕਾਰ \'ਤੇ ਜਾਓ ਫਾਈਲ ਦਾ ਨਾਮ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index fc0c20794..b4e179c74 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -275,7 +275,7 @@ Muzyka Nie można wyczyścić stanu odtwarzania Nie można zapisać stanu odtwarzania - Malejąco + Malejąco Playlisty Playlista Obraz playlisty %s diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index af9052aa1..ec43dcdc8 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -272,7 +272,7 @@ Persistência Comportamento Pastas - Descendente + Descendente Ignorar artigos ao classificar Ignore palavras como \"the\" ao classificar por nome (funciona melhor com músicas em inglês) \ No newline at end of file diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index d56b5eee1..8140c3ad1 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -260,7 +260,7 @@ %d artistas Equalização de volume ReplayGain - Descendente + Descendente Mude o tema e as cores do app Personalize os controles e o comportamento da interface do usuário Controle como a música e as imagens são carregadas diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index ed696e932..793b4ec7d 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -137,7 +137,7 @@ Redare selecție Listă de redare Liste de redare - Descrescător + Descrescător Selecție aleatorie aleasă Treceți la următoarea Redă de la artist diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 13a837c1b..6f311d10a 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -277,7 +277,7 @@ Воспроизведение Папки Состояние воспроизведения - По убыванию + По убыванию Плейлист Плейлисты Обложка плейлиста для %s diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 8b958539b..e9547d169 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -39,7 +39,7 @@ Spår Datum tillagt Stigande - Fallande + Fallande Nu spelar Utjämnare Spela diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 3a7d65394..86915531e 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -263,7 +263,7 @@ Oynatma Kütüphane Kalıcılık - Azalan + Azalan Uygulamanın temasını ve renklerini değiştirin Klasörler Arayüz kontrollerini ve davranışını özelleştirin diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index a4419687e..a8c4959d6 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -274,7 +274,7 @@ Стан відтворення Налаштуйте звук і поведінку при відтворенні Папки - За спаданням + За спаданням Зображення списку відтворення для %s Список відтворення Списки відтворення diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index c2a6138f2..1b91a7870 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -268,7 +268,7 @@ 文件夹 音乐 配置声音和播放行为 - 降序 + 降序 播放列表 播放列表 %s 的播放列表图片 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0e47fc0f1..d15b90062 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -105,7 +105,7 @@ Sort Ascending - Descending + Descending Now playing Equalizer