style: remove android string references

Remove references to android system strings, in favor of in-house
translations.

Previously Auxio would use the `android.R.string.ok` and
`android.R.string.cancel` strings to represent Ok and Cancel
respectively, but these system strings are actually untranslated on
some devices, so it is better for i18n if we use our own strings
for such.
This commit is contained in:
OxygenCobalt 2022-05-22 09:56:25 -06:00
parent 21fccf1f31
commit 2c7dd1241b
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
23 changed files with 159 additions and 149 deletions

View file

@ -5,6 +5,7 @@
#### What's New
- Added disc number support
- Added ReplayGain support for below-reference volume tracks [i.e positive ReplayGain values]
- Added ReplayGain pre-amp customization
- About screen now shows counts for multiple types of library items, alongside a total duration
- New disc, track, song count, and duration sorting modes

View file

@ -186,7 +186,7 @@ class MainFragment : ViewBindingFragment<FragmentMainBinding>() {
/**
* A back press callback that handles how to respond to backwards navigation in the detail
* fragments and the playback panel.
* fragments and the playback panel. TODO: Migrate to new predictive API
*/
inner class DynamicBackPressedCallback : OnBackPressedCallback(false) {
override fun handleOnBackPressed() {

View file

@ -32,8 +32,7 @@ import org.oxycblt.auxio.util.logD
import org.oxycblt.auxio.util.requireAttached
/**
* The dialog for customizing library tabs. This dialog does not rely on any specific ViewModel and
* serializes it's state instead of
* The dialog for customizing library tabs.
* @author OxygenCobalt
*/
class TabCustomizeDialog : ViewBindingDialogFragment<DialogTabsBinding>(), TabAdapter.Listener {
@ -46,14 +45,10 @@ class TabCustomizeDialog : ViewBindingDialogFragment<DialogTabsBinding>(), TabAd
override fun onConfigDialog(builder: AlertDialog.Builder) {
builder.setTitle(R.string.set_lib_tabs)
builder.setPositiveButton(android.R.string.ok) { _, _ ->
.setPositiveButton(R.string.lbl_ok) { _, _ ->
logD("Committing tab changes")
settingsManager.libTabs = tabAdapter.data.tabs
}
// Negative button just dismisses, no need for a listener.
builder.setNegativeButton(android.R.string.cancel, null)
}.setNegativeButton(R.string.lbl_cancel, null)
}
override fun onBindingCreated(binding: DialogTabsBinding, savedInstanceState: Bundle?) {

View file

@ -30,7 +30,9 @@ import org.oxycblt.auxio.util.requireBackgroundThread
* Database for storing excluded directories. Note that the paths stored here will not work with
* MediaStore unless you append a "%" at the end. Yes. I know Room exists. But that would needlessly
* bloat my app and has crippling bugs.
* @author OxygenCobalt TODO: Migrate this to SharedPreferences?
* @author OxygenCobalt
*
* TODO: Migrate this to SharedPreferences?
*/
class ExcludedDatabase(context: Context) : SQLiteOpenHelper(context, DB_NAME, null, DB_VERSION) {
override fun onCreate(db: SQLiteDatabase) {

View file

@ -53,12 +53,11 @@ class ExcludedDialog :
override fun onCreateBinding(inflater: LayoutInflater) = DialogExcludedBinding.inflate(inflater)
override fun onConfigDialog(builder: AlertDialog.Builder) {
builder.setTitle(R.string.set_excluded)
// Don't set the click listener here, we do some custom black magic in onCreateView instead.
builder.setNeutralButton(R.string.lbl_add, null)
builder.setPositiveButton(R.string.lbl_save, null)
builder.setNegativeButton(android.R.string.cancel, null)
builder.setTitle(R.string.set_excluded)
.setNeutralButton(R.string.lbl_add, null)
.setPositiveButton(R.string.lbl_save, null)
.setNegativeButton(R.string.lbl_cancel, null)
}
override fun onBindingCreated(binding: DialogExcludedBinding, savedInstanceState: Bundle?) {

View file

@ -34,6 +34,11 @@ import org.oxycblt.auxio.util.getAttrColorSafe
import org.oxycblt.auxio.util.systemBarInsetsCompat
import org.oxycblt.auxio.util.textSafe
/**
* A fragment showing the current playback state in a compact manner. Placed at the bottom of the
* screen. This expands into [PlaybackPanelFragment].
* @author OxygenCobalt
*/
class PlaybackBarFragment : ViewBindingFragment<FragmentPlaybackBarBinding>() {
private val playbackModel: PlaybackViewModel by activityViewModels()
private val navModel: NavigationViewModel by activityViewModels()

View file

@ -33,7 +33,7 @@ import org.oxycblt.auxio.util.textSafe
* The dialog for customizing the ReplayGain pre-amp values.
* @author OxygenCobalt
*/
class ReplayGainDialog : ViewBindingDialogFragment<DialogPreAmpBinding>() {
class PreAmpCustomizeDialog : ViewBindingDialogFragment<DialogPreAmpBinding>() {
private val settingsManager = SettingsManager.getInstance()
override fun onCreateBinding(inflater: LayoutInflater) = DialogPreAmpBinding.inflate(inflater)
@ -41,12 +41,12 @@ class ReplayGainDialog : ViewBindingDialogFragment<DialogPreAmpBinding>() {
override fun onConfigDialog(builder: AlertDialog.Builder) {
builder
.setTitle(R.string.set_pre_amp)
.setPositiveButton(android.R.string.ok) { _, _ ->
.setPositiveButton(R.string.lbl_ok) { _, _ ->
val binding = requireBinding()
settingsManager.replayGainPreAmp =
ReplayGainPreAmp(binding.withTagsSlider.value, binding.withoutTagsSlider.value)
}
.setNegativeButton(android.R.string.cancel, null)
.setNegativeButton(R.string.lbl_cancel, null)
}
override fun onBindingCreated(binding: DialogPreAmpBinding, savedInstanceState: Bundle?) {

View file

@ -35,10 +35,12 @@ import org.oxycblt.auxio.util.logW
import org.oxycblt.auxio.util.unlikelyToBeNull
/**
* An [AudioProcessor] that automatically handles ReplayGain values and their amplification of the
* audio stream. Instead of leveraging the volume attribute like other implementations, this system
* manipulates the bitstream itself to modify the volume, which allows the use of positive
* ReplayGain values.
* An [AudioProcessor] that handles ReplayGain values and their amplification of the audio stream.
* Instead of leveraging the volume attribute like other implementations, this system manipulates
* the bitstream itself to modify the volume, which allows the use of positive ReplayGain values.
*
* Note that you must still give it a [Metadata] instance for it to function, which should be done
* when the active track changes.
*
* @author OxygenCobalt
*/
@ -59,9 +61,8 @@ class ReplayGainAudioProcessor : BaseAudioProcessor() {
// --- REPLAYGAIN PARSING ---
/**
* Updates the rough volume adjustment for [Metadata] with ReplayGain tags. This is
* tangentially based off Vanilla Music's implementation, but has diverged to a significant
* extent.
* Updates the rough volume adjustment for [Metadata] with ReplayGain tags. This is tangentially
* based off Vanilla Music's implementation, but has diverged to a significant extent.
*/
fun applyReplayGain(metadata: Metadata?) {
if (settingsManager.replayGainMode == ReplayGainMode.OFF) {

View file

@ -33,8 +33,8 @@ import org.oxycblt.auxio.R
import org.oxycblt.auxio.home.tabs.TabCustomizeDialog
import org.oxycblt.auxio.music.excluded.ExcludedDialog
import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.playback.replaygain.ReplayGainDialog
import org.oxycblt.auxio.playback.replaygain.ReplayGainMode
import org.oxycblt.auxio.playback.replaygain.PreAmpCustomizeDialog
import org.oxycblt.auxio.settings.pref.IntListPreference
import org.oxycblt.auxio.settings.pref.IntListPreferenceDialog
import org.oxycblt.auxio.ui.accent.AccentCustomizeDialog
@ -168,7 +168,8 @@ class SettingsListFragment : PreferenceFragmentCompat() {
SettingsManager.KEY_PRE_AMP -> {
onPreferenceClickListener =
Preference.OnPreferenceClickListener {
ReplayGainDialog().show(childFragmentManager, ReplayGainDialog.TAG)
PreAmpCustomizeDialog()
.show(childFragmentManager, PreAmpCustomizeDialog.TAG)
true
}
}

View file

@ -22,6 +22,7 @@ import android.os.Bundle
import androidx.preference.PreferenceDialogFragmentCompat
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.oxycblt.auxio.BuildConfig
import org.oxycblt.auxio.R
class IntListPreferenceDialog : PreferenceDialogFragmentCompat() {
private val listPreference: IntListPreference
@ -35,7 +36,7 @@ class IntListPreferenceDialog : PreferenceDialogFragmentCompat() {
val builder = MaterialAlertDialogBuilder(requireContext(), theme)
builder.setTitle(listPreference.title)
builder.setPositiveButton(null, null)
builder.setNegativeButton(android.R.string.cancel, null)
builder.setNegativeButton(R.string.lbl_cancel, null)
builder.setSingleChoiceItems(listPreference.entries, listPreference.getValueIndex()) {
_,
index ->

View file

@ -42,7 +42,7 @@ class AccentCustomizeDialog :
override fun onConfigDialog(builder: AlertDialog.Builder) {
builder
.setTitle(R.string.set_accent)
.setPositiveButton(android.R.string.ok) { _, _ ->
.setPositiveButton(R.string.lbl_ok) { _, _ ->
if (accentAdapter.selectedAccent != settingsManager.accent) {
logD("Applying new accent")
settingsManager.accent = unlikelyToBeNull(accentAdapter.selectedAccent)
@ -51,9 +51,7 @@ class AccentCustomizeDialog :
dismiss()
}
// Negative button just dismisses, no need for a listener.
.setNegativeButton(android.R.string.cancel, null)
.setNegativeButton(R.string.lbl_cancel, null)
}
override fun onBindingCreated(binding: DialogAccentBinding, savedInstanceState: Bundle?) {

View file

@ -26,7 +26,7 @@
android:paddingStart="@dimen/spacing_medium"
android:paddingEnd="@dimen/spacing_medium"
android:paddingBottom="@dimen/spacing_medium"
android:text="@string/lbl_no_dirs"
android:text="@string/err_no_dirs"
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.Auxio.TitleMidLarge"
android:textColor="?android:attr/textColorSecondary" />

View file

@ -1,16 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools">
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/with_tags_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_medium"
android:layout_marginStart="@dimen/spacing_mid_large"
android:layout_marginTop="@dimen/spacing_medium"
android:text="@string/set_pre_amp_with"
android:textAppearance="@style/TextAppearance.Auxio.TitleMedium"
app:layout_constraintStart_toStartOf="parent"
@ -20,26 +24,26 @@
android:id="@+id/with_tags_slider"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small"
android:stepSize="0.1"
android:valueFrom="-15.0"
android:valueTo="15.0"
app:labelBehavior="gone"
app:thumbRadius="@dimen/slider_thumb_radius"
app:haloRadius="@dimen/slider_halo_radius"
app:tickVisible="false"
android:layout_marginStart="@dimen/spacing_small"
app:labelBehavior="gone"
app:layout_constraintEnd_toStartOf="@+id/with_tags_ticker"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/with_tags_header"
app:thumbRadius="@dimen/slider_thumb_radius"
app:tickVisible="false"
tools:value="0.0" />
<TextView
android:id="@+id/with_tags_ticker"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:minWidth="@dimen/size_btn_large"
android:layout_marginEnd="@dimen/spacing_mid_large"
android:gravity="center"
android:minWidth="@dimen/size_btn_large"
android:textAppearance="@style/TextAppearance.Auxio.BodyMedium"
app:layout_constraintBottom_toBottomOf="@+id/with_tags_slider"
app:layout_constraintEnd_toEndOf="parent"
@ -50,8 +54,8 @@
android:id="@+id/without_tags_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_medium"
android:layout_marginStart="@dimen/spacing_mid_large"
android:layout_marginTop="@dimen/spacing_medium"
android:text="@string/set_pre_amp_without"
android:textAppearance="@style/TextAppearance.Auxio.TitleMedium"
app:layout_constraintStart_toStartOf="parent"
@ -61,27 +65,27 @@
android:id="@+id/without_tags_slider"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_small"
android:stepSize="0.1"
android:valueFrom="-15.0"
android:valueTo="15.0"
app:thumbRadius="@dimen/slider_thumb_radius"
app:haloRadius="@dimen/slider_halo_radius"
android:layout_marginStart="@dimen/spacing_small"
app:tickVisible="false"
app:labelBehavior="gone"
app:layout_constraintEnd_toStartOf="@+id/without_tags_ticker"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/without_tags_header"
app:thumbRadius="@dimen/slider_thumb_radius"
app:tickVisible="false"
tools:value="0.0" />
<TextView
android:id="@+id/without_tags_ticker"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_mid_large"
android:gravity="center"
android:minWidth="@dimen/size_btn_large"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.Auxio.BodyMedium"
android:layout_marginEnd="@dimen/spacing_mid_large"
app:layout_constraintBottom_toBottomOf="@+id/without_tags_slider"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/without_tags_slider"
@ -91,13 +95,14 @@
android:id="@+id/pre_amp_notice"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_medium"
android:text="@string/set_pre_amp_warning"
android:layout_marginStart="@dimen/spacing_mid_large"
android:layout_marginTop="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_mid_large"
android:text="@string/set_pre_amp_warning"
android:textAppearance="@style/TextAppearance.Auxio.BodySmall"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/without_tags_slider" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>

View file

@ -47,7 +47,7 @@
<string name="lbl_add">أضف</string>
<string name="lbl_save">احفظ</string>
<string name="lbl_no_dirs">لا مجلد</string>
<string name="err_no_dirs">لا مجلد</string>
<string name="lbl_about">حول</string>
<string name="lbl_version">الإصدار</string>
@ -82,7 +82,7 @@
<string name="set_audio">صوتيات</string>
<string name="set_replay_gain">صخب الصوت</string>
<string name="set_off">اطفاء</string>
<string name="lbl_off">اطفاء</string>
<string name="set_replay_gain_track">تفضيل المقطع</string>
<string name="set_replay_gain_album">تفضيل الالبوم</string>
<string name="set_replay_gain_dynamic">ديناميكي</string>

View file

@ -38,7 +38,7 @@
<string name="lbl_state_saved">"Stav uložen"</string>
<string name="lbl_add">"Přidat"</string>
<string name="lbl_save">"Uložit"</string>
<string name="lbl_no_dirs">"Žádné složky"</string>
<string name="err_no_dirs">"Žádné složky"</string>
<string name="lbl_about">"O aplikaci"</string>
<string name="lbl_version">"Verze"</string>
<string name="lbl_code">"Zobrazit na GitHubu"</string>

View file

@ -40,7 +40,7 @@
<string name="lbl_add">Hinzufügen</string>
<string name="lbl_save">Speichern</string>
<string name="lbl_no_dirs">Keine Ordner</string>
<string name="err_no_dirs">Keine Ordner</string>
<string name="lbl_about">Über</string>
<string name="lbl_version">Version</string>
@ -74,7 +74,7 @@
<string name="set_headset_autoplay">Kopfhörer automatische Wiedergabe</string>
<string name="set_headset_autoplay_desc">Beginne die Wiedergabe immer, wenn Kopfhörer verbunden sind (funktioniert nicht auf allen Geräten)</string>
<string name="set_replay_gain">ReplayGain</string>
<string name="set_off">Aus</string>
<string name="lbl_off">Aus</string>
<string name="set_replay_gain_track">Titel bevorzugen</string>
<string name="set_replay_gain_album">Album bevorzugen</string>

View file

@ -47,7 +47,7 @@
<string name="lbl_add">Agregar</string>
<string name="lbl_save">Guardar</string>
<string name="lbl_no_dirs">Sin carpetas</string>
<string name="err_no_dirs">Sin carpetas</string>
<string name="lbl_about">Acerca de</string>
<string name="lbl_version">Versión</string>
@ -82,7 +82,7 @@
<string name="set_audio">Sonido</string>
<string name="set_replay_gain">ReplayGain</string>
<string name="set_off">Desactivado</string>
<string name="lbl_off">Desactivado</string>
<string name="set_replay_gain_track">Por pista</string>
<string name="set_replay_gain_album">Por álbum</string>
<string name="set_replay_gain_dynamic">Dinámico</string>

View file

@ -46,7 +46,7 @@
<string name="lbl_add">Aggiungi</string>
<string name="lbl_save">Salva</string>
<string name="lbl_no_dirs">Nessuna cartella</string>
<string name="err_no_dirs">Nessuna cartella</string>
<string name="lbl_about">Informazioni</string>
<string name="lbl_version">Versione</string>
@ -105,7 +105,7 @@
<string name="set_excluded">Cartelle escluse</string>
<string name="set_excluded_desc">Il contenuto delle cartelle escluse sarà nascosto dalla tua libreria</string>
<string name="set_off">Spento</string>
<string name="lbl_off">Spento</string>
<!-- Error Namespace | Error Labels -->
<string name="err_no_music">Musica non trovata</string>

View file

@ -41,7 +41,7 @@
<string name="lbl_add">Toevoegen</string>
<string name="lbl_save">Opslaan</string>
<string name="lbl_no_dirs">Geen Mappen</string>
<string name="err_no_dirs">Geen Mappen</string>
<string name="lbl_about">Over</string>
<string name="lbl_version">Versie</string>

View file

@ -47,7 +47,7 @@
<string name="lbl_add">Добавить</string>
<string name="lbl_save">Сохранить</string>
<string name="lbl_no_dirs">Папок нет</string>
<string name="err_no_dirs">Папок нет</string>
<string name="lbl_about">О программе</string>
<string name="lbl_version">Версия</string>
@ -84,7 +84,7 @@
<string name="set_headset_autoplay">Воспроизводить при подключении</string>
<string name="set_headset_autoplay_desc">Всегда начинать воспроизведение при подключении наушников (может работать не на всех устройствах)</string>
<string name="set_replay_gain">ReplayGain</string>
<string name="set_off">Выкл.</string>
<string name="lbl_off">Выкл.</string>
<string name="set_replay_gain_track">По треку</string>
<string name="set_replay_gain_album">По альбому</string>
<string name="set_replay_gain_dynamic">Динамический</string>

View file

@ -46,7 +46,7 @@
<string name="lbl_add">添加</string>
<string name="lbl_save">保存</string>
<string name="lbl_no_dirs">没有任何文件夹</string>
<string name="err_no_dirs">没有任何文件夹</string>
<string name="lbl_about">关于</string>
<string name="lbl_version">版本</string>
@ -104,7 +104,7 @@
<string name="set_excluded">排除文件夹</string>
<string name="set_excluded_desc">被排除文件夹的内容将从媒体库中隐藏</string>
<string name="set_off">关闭</string>
<string name="lbl_off">关闭</string>
<!-- Error Namespace | Error Labels -->
<string name="err_no_music">没有找到音乐</string>

View file

@ -31,7 +31,7 @@
</string-array>
<array name="entries_replay_gain">
<item>@string/set_off</item>
<item>@string/lbl_off</item>
<item>@string/set_replay_gain_track</item>
<item>@string/set_replay_gain_album</item>
<item>@string/set_replay_gain_dynamic</item>

View file

@ -48,9 +48,13 @@
<string name="lbl_state_saved">State saved</string>
<!-- Actual string: Ok -->
<string name="lbl_ok">@android:string/ok</string>
<!-- Actual string: Cancel -->
<string name="lbl_cancel">@android:string/cancel</string>
<string name="lbl_add">Add</string>
<string name="lbl_save">Save</string>
<string name="lbl_no_dirs">No Folders</string>
<string name="lbl_off">Off</string>
<string name="lbl_about">About</string>
<string name="lbl_version">Version</string>
@ -114,14 +118,12 @@
<string name="set_excluded">Excluded folders</string>
<string name="set_excluded_desc">The content of excluded folders is hidden from your library</string>
<!-- TODO: Phase out android strings for in-house strings -->
<string name="set_off">Off</string>
<!-- Error Namespace | Error Labels -->
<string name="err_no_music">No music found</string>
<string name="err_load_failed">Music loading failed</string>
<string name="err_no_perms">Auxio needs permission to read your music library</string>
<string name="err_no_app">No app can open this link</string>
<string name="err_no_dirs">No Folders</string>
<string name="err_bad_dir">This folder is not supported</string>
<string name="err_too_small">Auxio does not support this window size</string>