style: migrate to Material3

Mostly migrate to Material 3/Material You.

- Auxio should now follow dynamic colors on Android 12
- Accents have been regenerated to align with the new color roles
- Some colors have been tweaked here and there to line up with the
new design system
- Dialogs were not fully migrated, but that's because Material3 dialogs
look god-awful.
- Accent class was reworked to take up less memory

Now that this is out of the way, I can focus on other UI things before
the release of 2.0.0.
This commit is contained in:
OxygenCobalt 2021-10-10 16:44:17 -06:00
parent 5ebe17d0ad
commit 8c7f0867f9
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
87 changed files with 1013 additions and 529 deletions

View file

@ -100,15 +100,12 @@ dependencies {
implementation 'io.coil-kt:coil:1.3.2'
// Material
implementation "com.google.android.material:material:1.4.0"
implementation "com.google.android.material:material:1.5.0-alpha04"
// --- DEBUG ---
// Lint
ktlint 'com.pinterest:ktlint:0.42.1'
// Memory Leak checking
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'
}
task ktlint(type: JavaExec, group: "verification") {

View file

@ -90,6 +90,8 @@ class MainActivity : AppCompatActivity() {
}
private fun setupTheme() {
// We only use Material You theming on Android 12 and above.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
// Update the current accent and theme
val settingsManager = SettingsManager.getInstance()
AppCompatDelegate.setDefaultNightMode(settingsManager.theme)
@ -104,6 +106,7 @@ class MainActivity : AppCompatActivity() {
setTheme(newAccent.theme)
}
}
}
private fun applyEdgeToEdgeWindow(binding: ActivityMainBinding) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {

View file

@ -22,76 +22,108 @@ import android.annotation.SuppressLint
import android.content.Context
import android.content.res.ColorStateList
import android.text.Spanned
import androidx.annotation.ColorRes
import androidx.annotation.StringRes
import androidx.annotation.StyleRes
import androidx.core.text.HtmlCompat
import org.oxycblt.auxio.R
import org.oxycblt.auxio.util.resolveStateList
/**
* A list of all possible accents.
*/
val ACCENTS = arrayOf(
Accent(R.color.red, R.style.Theme_Auxio_Red, R.style.Theme_Auxio_Black_Red, R.string.clr_red),
Accent(R.color.pink, R.style.Theme_Auxio_Pink, R.style.Theme_Auxio_Black_Pink, R.string.clr_pink),
Accent(R.color.purple, R.style.Theme_Auxio_Purple, R.style.Theme_Auxio_Black_Purple, R.string.clr_purple),
Accent(
R.color.deep_purple,
val ACCENT_PRIMARY_COLORS = arrayOf(
R.color.red_primary,
R.color.pink_primary,
R.color.purple_primary,
R.color.deep_purple_primary,
R.color.indigo_primary,
R.color.blue_primary,
R.color.light_blue_primary,
R.color.cyan_primary,
R.color.teal_primary,
R.color.green_primary,
R.color.light_green_primary,
R.color.lime_primary,
R.color.yellow_primary,
R.color.orange_primary,
R.color.deep_orange_primary,
R.color.brown_primary,
R.color.grey_primary,
R.color.blue_grey_primary
)
val ACCENT_THEMES = arrayOf(
R.style.Theme_Auxio_Red,
R.style.Theme_Auxio_Pink,
R.style.Theme_Auxio_Purple,
R.style.Theme_Auxio_DeepPurple,
R.style.Theme_Auxio_Black_DeepPurple,
R.string.clr_deep_purple
),
Accent(R.color.indigo, R.style.Theme_Auxio_Indigo, R.style.Theme_Auxio_Black_Indigo, R.string.clr_indigo),
Accent(R.color.blue, R.style.Theme_Auxio_Blue, R.style.Theme_Auxio_Black_Blue, R.string.clr_blue),
Accent(
R.color.light_blue,
R.style.Theme_Auxio_Indigo,
R.style.Theme_Auxio_Blue,
R.style.Theme_Auxio_LightBlue,
R.style.Theme_Auxio_Black_LightBlue,
R.string.clr_light_blue
),
Accent(R.color.cyan, R.style.Theme_Auxio_Cyan, R.style.Theme_Auxio_Black_Cyan, R.string.clr_cyan),
Accent(R.color.teal, R.style.Theme_Auxio_Teal, R.style.Theme_Auxio_Black_Teal, R.string.clr_teal),
Accent(R.color.green, R.style.Theme_Auxio_Green, R.style.Theme_Auxio_Black_Green, R.string.clr_green),
Accent(
R.color.light_green,
R.style.Theme_Auxio_Cyan,
R.style.Theme_Auxio_Teal,
R.style.Theme_Auxio_Green,
R.style.Theme_Auxio_LightGreen,
R.style.Theme_Auxio_Black_LightGreen,
R.string.clr_light_green
),
Accent(R.color.lime, R.style.Theme_Auxio_Lime, R.style.Theme_Auxio_Black_Lime, R.string.clr_lime),
Accent(R.color.yellow, R.style.Theme_Auxio_Yellow, R.style.Theme_Auxio_Black_Yellow, R.string.clr_yellow),
Accent(R.color.orange, R.style.Theme_Auxio_Orange, R.style.Theme_Auxio_Black_Orange, R.string.clr_orange),
Accent(
R.color.deep_orange,
R.style.Theme_Auxio_Lime,
R.style.Theme_Auxio_Yellow,
R.style.Theme_Auxio_Orange,
R.style.Theme_Auxio_DeepOrange,
R.style.Theme_Auxio_Brown,
R.style.Theme_Auxio_Grey,
R.style.Theme_Auxio_BlueGrey
)
val ACCENT_BLACK_THEMES = arrayOf(
R.style.Theme_Auxio_Black_Red,
R.style.Theme_Auxio_Black_Pink,
R.style.Theme_Auxio_Black_Purple,
R.style.Theme_Auxio_Black_DeepPurple,
R.style.Theme_Auxio_Black_Indigo,
R.style.Theme_Auxio_Black_Blue,
R.style.Theme_Auxio_Black_LightBlue,
R.style.Theme_Auxio_Black_Cyan,
R.style.Theme_Auxio_Black_Teal,
R.style.Theme_Auxio_Black_Green,
R.style.Theme_Auxio_Black_LightGreen,
R.style.Theme_Auxio_Black_Lime,
R.style.Theme_Auxio_Black_Yellow,
R.style.Theme_Auxio_Black_Orange,
R.style.Theme_Auxio_Black_DeepOrange,
R.string.clr_deep_orange
),
Accent(R.color.brown, R.style.Theme_Auxio_Brown, R.style.Theme_Auxio_Brown, R.string.clr_label_brown),
Accent(R.color.grey, R.style.Theme_Auxio_Grey, R.style.Theme_Auxio_Black_Grey, R.string.clr_label_grey),
Accent(
R.color.blue_grey,
R.style.Theme_Auxio_BlueGrey,
R.style.Theme_Auxio_Black_BlueGrey,
R.style.Theme_Auxio_Black_Brown,
R.style.Theme_Auxio_Black_Grey,
R.style.Theme_Auxio_Black_BlueGrey
)
val ACCENT_NAMES = arrayOf(
R.string.clr_red,
R.string.clr_pink,
R.string.clr_purple,
R.string.clr_deep_purple,
R.string.clr_indigo,
R.string.clr_blue,
R.string.clr_light_blue,
R.string.clr_cyan,
R.string.clr_teal,
R.string.clr_green,
R.string.clr_light_green,
R.string.clr_lime,
R.string.clr_yellow,
R.string.clr_orange,
R.string.clr_deep_orange,
R.string.clr_brown,
R.string.clr_grey,
R.string.clr_blue_grey
),
)
/**
* The data object for an accent.
* @property color The color resource for this accent
* @property color The primary color resource for this accent
* @property theme The theme resource for this accent
* @property blackTheme The black theme resource for this accent
* @property name The name of this accent
* @author OxygenCobalt
*/
data class Accent(
@ColorRes val color: Int,
@StyleRes val theme: Int,
@StyleRes val blackTheme: Int,
@StringRes val name: Int
) {
data class Accent(val index: Int) {
val color: Int get() = ACCENT_PRIMARY_COLORS[index]
val theme: Int get() = ACCENT_THEMES[index]
val blackTheme: Int get() = ACCENT_BLACK_THEMES[index]
val name: Int get() = ACCENT_NAMES[index]
/**
* Get a [ColorStateList] of the accent
*/

View file

@ -38,14 +38,14 @@ class AccentAdapter(
) : RecyclerView.Adapter<AccentAdapter.ViewHolder>() {
private var selectedViewHolder: ViewHolder? = null
override fun getItemCount(): Int = ACCENTS.size
override fun getItemCount(): Int = ACCENT_PRIMARY_COLORS.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(ItemAccentBinding.inflate(parent.context.inflater))
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(ACCENTS[position])
holder.bind(Accent(position))
}
private fun setAccent(accent: Accent) {

View file

@ -47,7 +47,7 @@ class AccentDialog : LifecycleDialog() {
val binding = DialogAccentBinding.inflate(inflater)
savedInstanceState?.getInt(KEY_PENDING_ACCENT)?.let { index ->
pendingAccent = ACCENTS.getOrElse(index) { pendingAccent }
pendingAccent = Accent(index)
}
// --- UI SETUP ---
@ -70,7 +70,7 @@ class AccentDialog : LifecycleDialog() {
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt(KEY_PENDING_ACCENT, ACCENTS.indexOf(pendingAccent))
outState.putInt(KEY_PENDING_ACCENT, pendingAccent.index)
}
override fun onConfigDialog(builder: AlertDialog.Builder) {

View file

@ -46,7 +46,7 @@ import kotlin.system.exitProcess
* @author OxygenCobalt
*/
class ExcludedDialog : LifecycleDialog() {
private val blacklistModel: ExcludedViewModel by viewModels {
private val excludedModel: ExcludedViewModel by viewModels {
ExcludedViewModel.Factory(requireContext())
}
@ -60,7 +60,7 @@ class ExcludedDialog : LifecycleDialog() {
val binding = DialogExcludedBinding.inflate(inflater)
val adapter = ExcludedEntryAdapter { path ->
blacklistModel.removePath(path)
excludedModel.removePath(path)
}
val launcher = registerForActivityResult(
@ -83,7 +83,7 @@ class ExcludedDialog : LifecycleDialog() {
}
dialog.getButton(AlertDialog.BUTTON_POSITIVE)?.setOnClickListener {
if (blacklistModel.isModified()) {
if (excludedModel.isModified()) {
saveAndRestart()
} else {
dismiss()
@ -93,7 +93,7 @@ class ExcludedDialog : LifecycleDialog() {
// --- VIEWMODEL SETUP ---
blacklistModel.paths.observe(viewLifecycleOwner) { paths ->
excludedModel.paths.observe(viewLifecycleOwner) { paths ->
adapter.submitList(paths)
binding.excludedEmpty.isVisible = paths.isEmpty()
@ -122,7 +122,7 @@ class ExcludedDialog : LifecycleDialog() {
val path = parseDocTreePath(uri)
if (path != null) {
blacklistModel.addPath(path)
excludedModel.addPath(path)
} else {
// TODO: Tolerate this once the excluded system is modernized
requireContext().showToast(R.string.err_bad_dir)
@ -149,7 +149,7 @@ class ExcludedDialog : LifecycleDialog() {
}
private fun saveAndRestart() {
blacklistModel.save {
excludedModel.save {
playbackModel.savePlaybackState(requireContext(), ::hardRestart)
}
}

View file

@ -37,7 +37,7 @@ class ExcludedViewModel(context: Context) : ViewModel() {
private val mPaths = MutableLiveData(mutableListOf<String>())
val paths: LiveData<MutableList<String>> get() = mPaths
private val blacklistDatabase = ExcludedDatabase.getInstance(context)
private val excludedDatabase = ExcludedDatabase.getInstance(context)
private var dbPaths = listOf<String>()
init {
@ -69,7 +69,7 @@ class ExcludedViewModel(context: Context) : ViewModel() {
*/
fun save(onDone: () -> Unit) {
viewModelScope.launch(Dispatchers.IO) {
blacklistDatabase.writePaths(mPaths.value!!)
excludedDatabase.writePaths(mPaths.value!!)
dbPaths = mPaths.value!!
onDone()
@ -81,7 +81,7 @@ class ExcludedViewModel(context: Context) : ViewModel() {
*/
private fun loadDatabasePaths() {
viewModelScope.launch(Dispatchers.IO) {
dbPaths = blacklistDatabase.readPaths()
dbPaths = excludedDatabase.readPaths()
withContext(Dispatchers.Main) {
mPaths.value = dbPaths.toMutableList()
@ -97,7 +97,7 @@ class ExcludedViewModel(context: Context) : ViewModel() {
class Factory(private val context: Context) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
check(modelClass.isAssignableFrom(ExcludedViewModel::class.java)) {
"BlacklistViewModel.Factory does not support this class"
"ExcludedViewModel.Factory does not support this class"
}
@Suppress("UNCHECKED_CAST")

View file

@ -23,7 +23,6 @@ import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.core.view.iterator
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels

View file

@ -29,7 +29,6 @@ import org.oxycblt.auxio.music.ActionHeader
import org.oxycblt.auxio.music.BaseModel
import org.oxycblt.auxio.music.Header
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.ui.ActionHeaderViewHolder
import org.oxycblt.auxio.ui.BaseViewHolder
import org.oxycblt.auxio.ui.DiffCallback
@ -41,7 +40,6 @@ import org.oxycblt.auxio.util.logE
/**
* The single adapter for both the Next Queue and the User Queue.
* @param touchHelper The [ItemTouchHelper] ***containing*** [QueueDragCallback] to be used
* @param playbackModel The [PlaybackViewModel] for updates to be dispatched to
* @author OxygenCobalt
*/
class QueueAdapter(

View file

@ -27,7 +27,6 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.ItemTouchHelper
import kotlinx.coroutines.NonDisposableHandle.parent
import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.FragmentQueueBinding
import org.oxycblt.auxio.music.ActionHeader

View file

@ -53,7 +53,7 @@ class AboutFragment : Fragment() {
val musicStore = MusicStore.getInstance()
binding.applyEdge { bars ->
binding.aboutAppbar.updatePadding(top = bars.top,)
binding.aboutAppbar.updatePadding(top = bars.top)
binding.aboutContents.updatePadding(bottom = bars.bottom)
}

View file

@ -20,12 +20,8 @@ package org.oxycblt.auxio.settings
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.view.ContextThemeWrapper
import androidx.appcompat.widget.AppCompatTextView
import androidx.core.view.updatePadding
import androidx.preference.PreferenceFragmentCompat
import org.oxycblt.auxio.BuildConfig
import org.oxycblt.auxio.R
import org.oxycblt.auxio.ui.LifecycleDialog
class IntListPrefDialog : LifecycleDialog() {
@ -37,23 +33,7 @@ class IntListPrefDialog : LifecycleDialog() {
.findPreference<IntListPreference>(requireArguments().getString(ARG_KEY, null))
)
// Don't set the title. Instead, Set a custom title view so that the padding is actually a
// uniform 16dp between the title and the list of options. I can't believe I have to do this.
val titleView = AppCompatTextView(
ContextThemeWrapper(
requireContext(),
R.style.Widget_Auxio_Dialog_TextView
)
).apply {
text = pref.title
val padding = resources.getDimension(R.dimen.spacing_medium).toInt()
val paddingHack = resources.getDimension(R.dimen.spacing_small).toInt()
updatePadding(left = padding, top = padding, right = padding, bottom = paddingHack)
}
builder.setCustomTitle(titleView)
builder.setTitle(pref.title)
builder.setSingleChoiceItems(pref.entries, pref.getValueIndex()) { _, index ->
pref.setValueIndex(index)

View file

@ -21,7 +21,7 @@ package org.oxycblt.auxio.settings
import android.content.SharedPreferences
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.content.edit
import org.oxycblt.auxio.accent.ACCENTS
import org.oxycblt.auxio.accent.ACCENT_PRIMARY_COLORS
import org.oxycblt.auxio.accent.Accent
import org.oxycblt.auxio.playback.state.PlaybackMode
@ -70,8 +70,8 @@ fun handleAccentCompat(prefs: SharedPreferences): Accent {
}
// If there are still any issues with indices, just correct them so a crash doesnt occur.
if (accent > ACCENTS.lastIndex) {
accent = ACCENTS.lastIndex
if (accent > ACCENT_PRIMARY_COLORS.lastIndex) {
accent = ACCENT_PRIMARY_COLORS.lastIndex
}
prefs.edit {
@ -80,10 +80,10 @@ fun handleAccentCompat(prefs: SharedPreferences): Accent {
apply()
}
return ACCENTS[accent]
return Accent(accent)
}
return ACCENTS[prefs.getInt(SettingsManager.KEY_ACCENT, 5)]
return Accent(prefs.getInt(SettingsManager.KEY_ACCENT, 5))
}
fun handleSongPlayModeCompat(prefs: SharedPreferences): PlaybackMode {

View file

@ -22,7 +22,6 @@ import android.content.Context
import android.content.SharedPreferences
import androidx.core.content.edit
import androidx.preference.PreferenceManager
import org.oxycblt.auxio.accent.ACCENTS
import org.oxycblt.auxio.accent.Accent
import org.oxycblt.auxio.playback.state.PlaybackMode
import org.oxycblt.auxio.ui.DisplayMode
@ -58,12 +57,8 @@ class SettingsManager private constructor(context: Context) :
var accent: Accent
get() = handleAccentCompat(sharedPrefs)
set(value) {
val accentIndex = ACCENTS.indexOf(value)
check(accentIndex != -1) { "Invalid accent" }
sharedPrefs.edit {
putInt(KEY_ACCENT, accentIndex)
putInt(KEY_ACCENT, value.index)
apply()
}
}

View file

@ -23,11 +23,8 @@ import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatDialogFragment
import androidx.core.graphics.drawable.toDrawable
import androidx.fragment.app.DialogFragment
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.oxycblt.auxio.R
import org.oxycblt.auxio.util.resolveAttr
/**
* A wrapper around [DialogFragment] that allows the usage of the standard Auxio lifecycle
@ -37,9 +34,6 @@ abstract class LifecycleDialog : AppCompatDialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val builder = MaterialAlertDialogBuilder(requireActivity(), theme)
// Apply a custom background to avoid rounded corners.
builder.background = R.attr.colorSurface.resolveAttr(requireContext()).toDrawable()
onConfigDialog(builder)
return builder.create()

View file

@ -107,16 +107,6 @@ fun Context.isLandscape(): Boolean {
return resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE
}
/**
* Determine if we are in tablet mode or not
*/
fun Context.isTablet(): Boolean {
val layout = resources.configuration.screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK
return layout == Configuration.SCREENLAYOUT_SIZE_XLARGE ||
layout == Configuration.SCREENLAYOUT_SIZE_LARGE
}
/**
* Determine if the tablet is XLARGE, ignoring normal tablets.
*/

View file

@ -21,7 +21,6 @@ package org.oxycblt.auxio.util
import android.database.Cursor
import android.database.sqlite.SQLiteDatabase
import android.os.Looper
import org.oxycblt.auxio.R
/**
* Shortcut for querying all items in a database and running [block] with the cursor returned.

View file

@ -27,7 +27,6 @@ import android.os.Build
import android.util.TypedValue
import android.view.View
import android.view.WindowInsets
import android.widget.ImageButton
import androidx.annotation.AttrRes
import androidx.annotation.ColorInt
import androidx.annotation.ColorRes
@ -86,17 +85,6 @@ fun RecyclerView.applySpans(shouldBeFullWidth: ((Int) -> Boolean)? = null) {
*/
fun RecyclerView.canScroll(): Boolean = computeVerticalScrollRange() > height
/**
* Disable an image button.
* TODO: Replace this fragile function with something else.
*/
fun ImageButton.disable() {
if (isEnabled) {
imageTintList = ContextCompat.getColorStateList(context, R.color.overlay_disabled)
isEnabled = false
}
}
/**
* Resolve a color.
* @param context [Context] required

View file

@ -1,45 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!-- Animator from IndicatorFastScroll (https://github.com/reddit/IndicatorFastScroll) -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true">
<set>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleX"
android:valueTo="1"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleY"
android:valueTo="1"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="alpha"
android:valueTo="1"
android:valueType="floatType" />
</set>
</item>
<item>
<set>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleX"
android:valueTo="0"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleY"
android:valueTo="0"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="alpha"
android:valueTo="0"
android:valueType="floatType" />
</set>
</item>
</selector>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorOnSurface" android:alpha="0.24" android:state_enabled="false" />
<item android:alpha="0.24" android:color="?attr/colorOnSurface" android:state_enabled="false" />
<item android:color="?attr/colorControlNormal" />
</selector>

View file

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="0.12" android:color="?attr/elevationOverlayColor" />
</selector>

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorOnSurface" android:alpha="0.16" />
<item android:alpha="0.16" android:color="?attr/colorOnSurface" />
</selector>

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorOnSurface" android:alpha="0.12" />
<item android:alpha="0.24" android:color="?attr/colorOnSurface" />
</selector>

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorAccent"
android:state_activated="true" />
<item android:color="?attr/colorPrimary" android:state_activated="true" />
<item android:color="?attr/colorControlNormal" />
</selector>

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorAccent"
android:state_activated="true" />
<item android:color="?attr/colorPrimary" android:state_activated="true" />
<item android:color="?android:attr/textColorPrimary" />
</selector>

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorAccent"
android:state_activated="true" />
<item android:color="?attr/colorPrimary" android:state_activated="true" />
<item android:color="?android:attr/textColorSecondary" />
</selector>

View file

@ -5,6 +5,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?attr/colorAccent"
android:fillColor="?attr/colorPrimary"
android:pathData="M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9c0.83 0 1.5-0.67 1.5-1.5 0-0.39-0.15-0.74-0.39-1.01-0.23-0.26-0.38-0.61-0.38-0.99 0-0.83 0.67-1.5 1.5-1.5H16c2.76 0 5-2.24 5-5 0-4.42-4.03-8-9-8zm-5.5 9C5.67 12 5 11.33 5 10.5S5.67 9 6.5 9 8 9.67 8 10.5 7.33 12 6.5 12zm3-4C8.67 8 8 7.33 8 6.5S8.67 5 9.5 5 11 5.67 11 6.5 10.33 8 9.5 8zm5 0C13.67 8 13 7.33 13 6.5S13.67 5 14.5 5 16 5.67 16 6.5 15.33 8 14.5 8zm3 4c-0.83 0-1.5-0.67-1.5-1.5S16.67 9 17.5 9 19 9.67 19 10.5 18.33 12 17.5 12z" />
</vector>

View file

@ -2,7 +2,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorAccent"
android:tint="?attr/colorPrimary"
android:viewportWidth="24"
android:viewportHeight="24">
<path

View file

@ -2,7 +2,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorAccent"
android:tint="?attr/colorPrimary"
android:viewportWidth="24"
android:viewportHeight="24">
<path

View file

@ -2,7 +2,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorAccent"
android:tint="?attr/colorPrimary"
android:viewportWidth="24"
android:viewportHeight="24">
<path

View file

@ -2,7 +2,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorAccent"
android:tint="?attr/colorPrimary"
android:viewportWidth="24"
android:viewportHeight="24">
<path

View file

@ -2,7 +2,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorAccent"
android:tint="?attr/colorPrimary"
android:viewportWidth="24"
android:viewportHeight="24">
<path

View file

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorAccent"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M22 2H6v16h16V2zm-4 5h-3v5.5c0 1.38-1.12 2.5-2.5 2.5S10 13.88 10 12.5s1.12-2.5 2.5-2.5c0.57 0 1.08 0.19 1.5 0.51V5h4v2zM4 6H2v16h16v-2H4V6z" />
</vector>

View file

@ -2,7 +2,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorAccent"
android:tint="?attr/colorPrimary"
android:viewportWidth="24"
android:viewportHeight="24">
<path

View file

@ -2,7 +2,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorAccent"
android:tint="?attr/colorPrimary"
android:viewportWidth="24"
android:viewportHeight="24">
<path

View file

@ -2,7 +2,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorAccent"
android:tint="?attr/colorPrimary"
android:viewportWidth="24"
android:viewportHeight="24">
<path

View file

@ -2,7 +2,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorAccent"
android:tint="?attr/colorPrimary"
android:viewportWidth="24"
android:viewportHeight="24">
<path

View file

@ -1,7 +1,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorAccent"
android:tint="?attr/colorPrimary"
android:viewportWidth="24"
android:viewportHeight="24">
<path

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/mtrl_btn_ripple_color">
android:color="@color/overlay_selection">
<item>
<shape android:shape="rectangle"
android:tint="@color/sel_accented">

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--Custom cursor shape that reflects the current accent color. https://stackoverflow.com/a/28311351/14143986-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="?attr/colorAccent" />
<size android:width="2dp" />
</shape>

View file

@ -7,7 +7,7 @@
<shape android:shape="rectangle">
<stroke
android:width="@dimen/size_stroke_small"
android:color="@color/mtrl_btn_stroke_color_selector" />
android:color="?attr/colorOutline" />
</shape>
</item>
</layer-list>

View file

@ -9,6 +9,9 @@
android:layout_height="match_parent"
android:overScrollMode="never"
android:paddingTop="@dimen/spacing_medium"
android:paddingStart="@dimen/spacing_small"
android:paddingEnd="@dimen/spacing_small"
android:paddingBottom="@dimen/spacing_small"
app:layoutManager="org.oxycblt.auxio.accent.AutoGridLayoutManager"
app:layout_constraintBottom_toTopOf="@+id/accent_cancel"
app:layout_constraintTop_toBottomOf="@+id/accent_header"

View file

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:paddingTop="@dimen/spacing_medium"
android:paddingEnd="@dimen/spacing_medium"
android:paddingStart="@dimen/spacing_medium"
android:paddingBottom="@dimen/spacing_small"
android:fontFamily="@font/inter_bold"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/text_size_large"
tools:text="Title" />

View file

@ -34,11 +34,9 @@
android:layout_height="wrap_content"
android:background="@android:color/transparent"
app:tabContentStart="@dimen/spacing_medium"
app:tabIndicatorColor="?attr/colorAccent"
app:tabMode="scrollable"
app:tabTextAppearance="@style/TextAppearance.Auxio.TabLayout.Label"
app:tabTextColor="?android:attr/textColorPrimary"
app:tabUnboundedRipple="true" />
app:tabTextColor="@color/sel_accented_primary"/>
</org.oxycblt.auxio.ui.LiftAppBarLayout>

View file

@ -28,7 +28,7 @@
android:layout_height="wrap_content"
app:hintEnabled="false"
app:boxBackgroundMode="filled"
app:boxStrokeColor="?attr/colorAccent"
app:boxStrokeColor="?attr/colorPrimary"
app:boxStrokeWidth="0dp"
app:boxStrokeWidthFocused="@dimen/size_stroke_large"
app:endIconContentDescription="@string/desc_clear_search"
@ -45,8 +45,7 @@
android:hint="@string/hint_search_library"
android:padding="@dimen/spacing_medium"
android:imeOptions="actionSearch|flagNoExtractUi"
android:inputType="textFilter"
android:textCursorDrawable="@drawable/ui_cursor" />
android:inputType="textFilter" />
</com.google.android.material.textfield.TextInputLayout>
</org.oxycblt.auxio.ui.LiftAppBarLayout>

View file

@ -17,7 +17,7 @@
android:padding="@dimen/spacing_medium"
android:scaleType="fitCenter"
android:src="@drawable/ic_check"
tools:backgroundTint="?attr/colorAccent"
tools:backgroundTint="?attr/colorPrimary"
tools:ignore="ContentDescription, SpeakableTextPresentCheck" />
</FrameLayout>

View file

@ -25,9 +25,9 @@
<TextView
android:id="@+id/album_name"
style="@style/Widget.Auxio.TextView.Item.Primary"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/Widget.Auxio.TextView.Item.Primary"
android:text="@{album.name}"
app:layout_constraintBottom_toTopOf="@+id/album_info"
app:layout_constraintEnd_toEndOf="parent"
@ -38,9 +38,9 @@
<TextView
android:id="@+id/album_info"
style="@style/Widget.Auxio.TextView.Item.Secondary"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/Widget.Auxio.TextView.Item.Secondary"
android:text="@{@string/fmt_two(album.artist.name, @plurals/fmt_song_count(album.songs.size, album.songs.size))}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -5,6 +5,8 @@
<androidx.constraintlayout.widget.ConstraintLayout
style="@style/Widget.Auxio.ItemLayout"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:clickable="false"
android:focusable="false"
android:padding="0dp">
@ -12,6 +14,8 @@
<TextView
android:id="@+id/excluded_path"
style="@style/Widget.Auxio.TextView.Item.Primary"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_margin="@dimen/spacing_medium"
android:maxLines="@null"
android:gravity="center"

View file

@ -38,11 +38,11 @@
android:id="@+id/action_settings"
android:icon="@drawable/ic_settings"
android:title="@string/set_title"
app:showAsAction="never"/>
app:showAsAction="never" />
<item
android:id="@+id/action_about"
android:icon="@drawable/ic_about"
android:title="@string/lbl_about"
app:showAsAction="never"/>
app:showAsAction="never" />
</menu>

View file

@ -10,7 +10,6 @@
<!-- Label Namespace | Static Labels -->
<string name="lbl_retry">"Zkusit znovu"</string>
<string name="lbl_grant">"Udělit"</string>
<string name="lbl_library">"Knihovna"</string>
<string name="lbl_genres">"Žánry"</string>
<string name="lbl_artists">"Umělci"</string>
<string name="lbl_albums">"Alba"</string>
@ -60,9 +59,6 @@
<string name="set_black_mode">"Černé téma"</string>
<string name="setting_black_mode_desc">"Použít kompletně černé tmavé téma"</string>
<string name="set_display">"Zobrazení"</string>
<string name="set_lib_display">"Položky knihovny"</string>
<string name="set_color_notif">"Obarvit oznámení"</string>
<string name="set_color_notif_desc">"Zobrazit obrázek alba v oznámení"</string>
<string name="set_show_covers">"Zobrazit barvy alba"</string>
<string name="set_show_covers_desc">"Vypněte pro ušetření paměti"</string>
<string name="set_quality_covers">"Ignorovat obaly MediaStore"</string>
@ -100,7 +96,6 @@
<string name="hint_search_library">"Prohledat vaši knihovnu…"</string>
<!-- Description Namespace | Accessibility Strings -->
<string name="desc_sort">"Změnit pořadí řazení"</string>
<string name="desc_track_number">"Stopa %d"</string>
<string name="desc_play_pause">"Přehrát nebo pozastavit"</string>
<string name="desc_skip_next">"Přeskočit na další skladbu"</string>
@ -119,8 +114,6 @@
<!-- Default Namespace | Placeholder values -->
<string name="def_genre">"Neznámý žánr"</string>
<string name="def_artist">"Neznámý umělec"</string>
<string name="def_album">"Neznámé album"</string>
<string name="def_date">"Neznámé datum"</string>
<string name="def_playback">"Nehraje žádná hudba"</string>
<string name="def_widget_song">"Název skladby"</string>
@ -142,8 +135,8 @@
<string name="clr_yellow">"Žlutá"</string>
<string name="clr_orange">"Oranžová"</string>
<string name="clr_deep_orange">"Tmavě oranžová"</string>
<string name="clr_label_brown">"Hnědá"</string>
<string name="clr_label_grey">"Šedá"</string>
<string name="clr_brown">"Hnědá"</string>
<string name="clr_grey">"Šedá"</string>
<string name="clr_blue_grey">"Modrá šedá"</string>
<!-- Format Namespace | Value formatting/plurals -->

View file

@ -7,7 +7,6 @@
<string name="lbl_retry">Erneut versuchen</string>
<string name="lbl_grant">Gewähren</string>
<string name="lbl_library">Bibliothek</string>
<string name="lbl_genres">Genres</string>
<string name="lbl_artists">Künstler</string>
<string name="lbl_albums">Alben</string>
@ -62,9 +61,6 @@
<string name="set_accent">Akzentfarbe</string>
<string name="set_display">Anzeige</string>
<string name="set_lib_display">Musikbibliothekeinträge</string>
<string name="set_color_notif">Benachrichtigung farblich anpassen</string>
<string name="set_color_notif_desc">Albumcover in Benachrichtigung zeigen</string>
<string name="set_show_covers">Albumcover anzeigen</string>
<string name="set_show_covers_desc">Ausschalten um Speicherplatz zu sparen</string>
<string name="set_quality_covers">MediaStore Cover ignorieren</string>
@ -103,7 +99,6 @@
<string name="hint_search_library">Musikbibliothek durchsuchen…</string>
<!-- Description Namespace | Accessibility Strings -->
<string name="desc_sort">Reihenfolge ändern</string>
<string name="desc_track_number">Titel %d</string>
<string name="desc_play_pause">Abspielen oder Pausieren</string>
@ -121,8 +116,6 @@
<!-- Placeholder Namespace | Placeholder values -->
<string name="def_genre">Unbekanntes Genre</string>
<string name="def_artist">Unbekannter Künstler</string>
<string name="def_album">Unbekanntes Album</string>
<string name="def_date">Kein Datum</string>
<!-- Color Label namespace | Accent names -->
@ -141,8 +134,8 @@
<string name="clr_yellow">Gelb</string>
<string name="clr_orange">Orange</string>
<string name="clr_deep_orange">Tieforange</string>
<string name="clr_label_brown">Braun</string>
<string name="clr_label_grey">Grau</string>
<string name="clr_brown">Braun</string>
<string name="clr_grey">Grau</string>
<string name="clr_blue_grey">Blaugrau</string>
<!-- Format Namespace | Value formatting/plurals -->

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">Προσπάθεια εκ νέου</string>
<string name="lbl_grant">Χορήγησε</string>
<string name="lbl_library">Βιβλιοθήκη</string>
<string name="lbl_genres">Είδη</string>
<string name="lbl_artists">Καλλιτέχνες</string>
<string name="lbl_albums">Άλμπουμ</string>
@ -45,7 +44,6 @@
<string name="set_theme_night">Σκοτεινό</string>
<string name="set_accent">Χρώμα χαρακτήρων</string>
<string name="set_color_notif">Χρωματισμός ειδοποιήσεων</string>
<string name="set_quality_covers">Παράληψη των Media Store εξωφύλλων</string>
<string name="set_audio">Ήχος</string>
@ -74,8 +72,8 @@
<string name="clr_lime">Πράσινος Κίτρινος</string>
<string name="clr_yellow">Κίτρινος</string>
<string name="clr_orange">Πορτοκαλής</string>
<string name="clr_label_brown">Καφέ</string>
<string name="clr_label_grey">Γκρί</string>
<string name="clr_brown">Καφέ</string>
<string name="clr_grey">Γκρί</string>
<string name="clr_blue_grey">Γαλάζιος Γκρί</string>
<!-- Format Namespace | Value formatting/plurals -->

View file

@ -8,7 +8,6 @@
<string name="lbl_retry">Reintentar</string>
<string name="lbl_grant">Permitir</string>
<string name="lbl_library">Biblioteca</string>
<string name="lbl_genres">Géneros</string>
<string name="lbl_artists">Artistas</string>
<string name="lbl_albums">Álbum</string>
@ -65,9 +64,6 @@
<string name="setting_black_mode_desc">Usar tema negro puro</string>
<string name="set_display">Pantalla</string>
<string name="set_lib_display">Ítem de biblioteca</string>
<string name="set_color_notif">Ajustar color de notificación</string>
<string name="set_color_notif_desc">Mostrar imagen de álbum en la notificación</string>
<string name="set_show_covers">Mostrar carátula de álbum</string>
<string name="set_show_covers_desc">Desactivar para ahorrar uso de memoria</string>
<string name="set_quality_covers">Ignorar carátulas de MediaStore</string>
@ -106,7 +102,6 @@
<string name="hint_search_library">Busca en tu biblioteca…</string>
<!-- Description Namespace | Accessibility Strings -->
<string name="desc_sort">Cambiar el orden de clasificación</string>
<string name="desc_track_number">Pista %d</string>
<string name="desc_play_pause">Reproducir o Pausar</string>
@ -125,8 +120,6 @@
<!-- Placeholder Namespace | Placeholder values -->
<string name="def_genre">Género desconocido</string>
<string name="def_artist">Artista desconocido</string>
<string name="def_album">Álbum desconocido</string>
<string name="def_date">Sin fecha</string>
<!-- Color Label namespace | Accent names -->
@ -145,8 +138,8 @@
<string name="clr_yellow">Amarillo</string>
<string name="clr_orange">Naranja</string>
<string name="clr_deep_orange">Naranja Profundo</string>
<string name="clr_label_brown">Café</string>
<string name="clr_label_grey">Gris</string>
<string name="clr_brown">Café</string>
<string name="clr_grey">Gris</string>
<string name="clr_blue_grey">Azul Gris</string>
<!-- Format Namespace | Value formatting/plurals -->

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">Réessayer</string>
<string name="lbl_grant">Accorder</string>
<string name="lbl_library">Bibliothèque</string>
<string name="lbl_genres">Genres</string>
<string name="lbl_artists">Artistes</string>
<string name="lbl_albums">Albums</string>
@ -48,8 +47,6 @@
<string name="set_theme_night">Sombre</string>
<string name="set_accent">Couleur d\'accentuation</string>
<string name="set_lib_display">Objets Bibliothèque</string>
<string name="set_color_notif">Notification colorée</string>
<string name="set_quality_covers">Ignorer le stockage des pochettes</string>
<string name="set_audio">Audio</string>
@ -84,8 +81,8 @@
<string name="clr_lime">Vert Citron</string>
<string name="clr_yellow">Jaune</string>
<string name="clr_orange">Orange</string>
<string name="clr_label_brown">Brun</string>
<string name="clr_label_grey">Gris</string>
<string name="clr_brown">Brun</string>
<string name="clr_grey">Gris</string>
<string name="clr_blue_grey">Bleu Gris</string>
<!-- Format Namespace | Value formatting/plurals -->

View file

@ -5,7 +5,6 @@
<string name="lbl_grant">अनुदान</string>
<string name="lbl_artists">कलाकार</string>
<string name="lbl_library">पुस्तकालय</string>
<string name="lbl_albums">एल्बम</string>
<string name="lbl_songs">गीत</string>
<string name="lbl_all_songs">गीत</string>
@ -40,8 +39,6 @@
<string name="set_theme_night">स्वचलित</string>
<string name="set_accent">एक्सेंट</string>
<string name="set_color_notif">अधिसूचना को रंग दें</string>
<string name="set_audio">ऑडियो</string>
<string name="set_focus">ऑडियो फोकस</string>
<string name="set_plug_mgt">हेडसेट प्लग</string>

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">Újra</string>
<string name="lbl_grant">Engedélyezés</string>
<string name="lbl_library">Könyvtár</string>
<string name="lbl_genres">Műfajo</string>
<string name="lbl_artists">Előadók</string>
<string name="lbl_albums">Albumok</string>
@ -47,7 +46,6 @@
<string name="set_theme_night">Sötét</string>
<string name="set_accent">Kiemelés</string>
<string name="set_color_notif">Értesítés színezése</string>
<string name="set_quality_covers">A médiatár albumborítók figyelmen kívül hagyása</string>
<string name="set_audio">Hang</string>
@ -83,8 +81,8 @@
<string name="clr_lime">Sárgazöld</string>
<string name="clr_yellow">Sárga</string>
<string name="clr_orange">Narancs</string>
<string name="clr_label_brown">Barna</string>
<string name="clr_label_grey">Szürke</string>
<string name="clr_brown">Barna</string>
<string name="clr_grey">Szürke</string>
<string name="clr_blue_grey">Kékszürke</string>
<!-- Format Namespace | Value formatting/plurals -->

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">Ulangi</string>
<string name="lbl_grant">Izinkan</string>
<string name="lbl_library">Pustaka</string>
<string name="lbl_genres">Aliran</string>
<string name="lbl_artists">Artis</string>
<string name="lbl_albums">Album</string>
@ -47,7 +46,6 @@
<string name="set_theme_night">Gelap</string>
<string name="set_accent">Aksen</string>
<string name="set_color_notif">Warnai Notifikasi</string>
<string name="set_quality_covers">Abaikan sampul-sampul pada Media Penyimpanan</string>
<string name="set_audio">Audio</string>

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">Riprova</string>
<string name="lbl_grant">Permetti</string>
<string name="lbl_library">Libreria</string>
<string name="lbl_genres">Generi</string>
<string name="lbl_artists">Artisti</string>
<string name="lbl_albums">Albums</string>
@ -48,7 +47,6 @@
<string name="set_theme_night">Scuro</string>
<string name="set_accent">Accento</string>
<string name="set_color_notif">Colora notifica</string>
<string name="set_quality_covers">Ignora le copertine del Media Store</string>
<string name="set_audio">Audio</string>
@ -84,8 +82,8 @@
<string name="clr_lime">Verde Giallo</string>
<string name="clr_yellow">Giallo</string>
<string name="clr_orange">Arancio</string>
<string name="clr_label_brown">Bruno</string>
<string name="clr_label_grey">Grigio</string>
<string name="clr_brown">Bruno</string>
<string name="clr_grey">Grigio</string>
<string name="clr_blue_grey">Azzurro Grigio</string>
<!-- Format Namespace | Value formatting/plurals -->

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">재시도</string>
<string name="lbl_grant">허가</string>
<string name="lbl_library">보관함</string>
<string name="lbl_genres">장르</string>
<string name="lbl_artists">아티스트</string>
<string name="lbl_albums">앨범</string>
@ -46,7 +45,6 @@
<string name="set_theme_night">어두운 테마</string>
<string name="set_accent">강조</string>
<string name="set_color_notif">색상화된 알림</string>
<string name="set_quality_covers">미디어 스토어 앨범 커버 무시</string>
<string name="set_audio">오디오</string>

View file

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Android 12 configuration -->
<style name="Theme.Auxio.V31" parent="Theme.Auxio.V27">
<!-- Make our splash drawable only the foreground -->
<item name="android:windowSplashScreenAnimatedIcon">@drawable/ic_launcher_foreground</item>
<!--
Theme.Material3.DayNight doesn't actually apply dynamic colors by default. No.
You have to apply a T H E M E O V E R L A Y for them to work. Except the ThemeOverlay
causes appbars to become a completely different color for basically no reason! Guess
we have to manually copy paste these values into our V31 styles instead!
Why do I keep developing for this platform why do I keep developing for this platform why
-->
<!-- Color palettes -->
<item name="colorPrimary">@color/m3_sys_color_dynamic_dark_primary</item>
<item name="colorOnPrimary">@color/m3_sys_color_dynamic_dark_on_primary</item>
<item name="colorPrimaryInverse">@color/m3_sys_color_dynamic_dark_inverse_primary</item>
<item name="colorPrimaryContainer">@color/m3_sys_color_dynamic_dark_primary_container</item>
<item name="colorOnPrimaryContainer">@color/m3_sys_color_dynamic_dark_on_primary_container</item>
<item name="colorSecondary">@color/m3_sys_color_dynamic_dark_secondary</item>
<item name="colorOnSecondary">@color/m3_sys_color_dynamic_dark_on_secondary</item>
<item name="colorSecondaryContainer">@color/m3_sys_color_dynamic_dark_secondary_container</item>
<item name="colorOnSecondaryContainer">@color/m3_sys_color_dynamic_dark_on_secondary_container</item>
<item name="colorTertiary">@color/m3_sys_color_dynamic_dark_tertiary</item>
<item name="colorOnTertiary">@color/m3_sys_color_dynamic_dark_on_tertiary</item>
<item name="colorTertiaryContainer">@color/m3_sys_color_dynamic_dark_tertiary_container</item>
<item name="colorOnTertiaryContainer">@color/m3_sys_color_dynamic_dark_on_tertiary_container</item>
<item name="android:colorBackground">@color/m3_sys_color_dynamic_dark_background</item>
<item name="colorOnBackground">@color/m3_sys_color_dynamic_dark_on_background</item>
<item name="colorSurface">@color/m3_sys_color_dynamic_dark_surface</item>
<item name="colorOnSurface">@color/m3_sys_color_dynamic_dark_on_surface</item>
<item name="colorSurfaceVariant">@color/m3_sys_color_dynamic_dark_surface_variant</item>
<item name="colorOnSurfaceVariant">@color/m3_sys_color_dynamic_dark_on_surface_variant</item>
<item name="colorSurfaceInverse">@color/m3_sys_color_dynamic_dark_inverse_surface</item>
<item name="colorOnSurfaceInverse">@color/m3_sys_color_dynamic_dark_inverse_on_surface</item>
<item name="colorOutline">@color/m3_sys_color_dynamic_dark_outline</item>
<item name="colorError">@color/m3_sys_color_dark_error</item>
<item name="colorOnError">@color/m3_sys_color_dark_on_error</item>
<item name="colorErrorContainer">@color/m3_sys_color_dark_error_container</item>
<item name="colorOnErrorContainer">@color/m3_sys_color_dark_on_error_container</item>
<!-- Default Framework Text Colors. -->
<item name="android:textColorPrimary">@color/m3_dynamic_dark_default_color_primary_text</item>
<item name="android:textColorPrimaryInverse">@color/m3_dynamic_default_color_primary_text</item>
<item name="android:textColorSecondary">@color/m3_dynamic_dark_default_color_secondary_text</item>
<item name="android:textColorSecondaryInverse">@color/m3_dynamic_default_color_secondary_text</item>
<item name="android:textColorTertiary">@color/m3_dynamic_dark_default_color_secondary_text</item>
<item name="android:textColorTertiaryInverse">@color/m3_dynamic_default_color_secondary_text</item>
<item name="android:textColorPrimaryDisableOnly">@color/m3_dynamic_dark_primary_text_disable_only</item>
<item name="android:textColorPrimaryInverseDisableOnly">@color/m3_dynamic_primary_text_disable_only</item>
<item name="android:textColorHint">@color/m3_dynamic_dark_hint_foreground</item>
<item name="android:textColorHintInverse">@color/m3_dynamic_hint_foreground</item>
<item name="android:textColorHighlight">@color/m3_dynamic_dark_highlighted_text</item>
<item name="android:textColorHighlightInverse">@color/m3_dynamic_highlighted_text</item>
<item name="android:textColorAlertDialogListItem">@color/m3_dynamic_dark_default_color_primary_text</item>
</style>
</resources>

View file

@ -1,29 +1,118 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="surface">#202124</color>
<color name="surface">#1f1f1f</color>
<color name="control">#ffffff</color>
<color name="nav_bar">#01151515</color>
<!--
Base color set derived from Music Player GO.
https://github.com/enricocid/Music-Player-GO
Each accent's color roles.
Note that some accents might have different tones used for legibility. Those are not errors.
-->
<color name="red">#ef9a9a</color>
<color name="pink">#f48fb1</color>
<color name="purple">#ce93d8</color>
<color name="deep_purple">#b39ddb</color>
<color name="indigo">#9fa8da</color>
<color name="blue">#90caf9</color>
<color name="light_blue">#81d4fa</color>
<color name="cyan">#80deea</color>
<color name="teal">#80cbc4</color>
<color name="green">#a5d6a7</color>
<color name="light_green">#c5e1a5</color>
<color name="lime">#e6ee9c</color>
<color name="yellow">#ffe082</color>
<color name="orange">#ffcc80</color>
<color name="deep_orange">#ffab91</color>
<color name="brown">#bcaaa4</color>
<color name="grey">#cfcfcf</color>
<color name="blue_grey">#b0bec5</color>
<color name="red_primary">@color/red_80</color>
<color name="red_on_primary">@color/red_20</color>
<color name="red_primary_inverse">@color/red_40</color>
<color name="red_primary_container">@color/red_30</color>
<color name="red_on_primary_container">@color/red_90</color>
<color name="pink_primary">@color/pink_80</color>
<color name="pink_on_primary">@color/pink_20</color>
<color name="pink_primary_inverse">@color/pink_40</color>
<color name="pink_primary_container">@color/pink_30</color>
<color name="pink_on_primary_container">@color/pink_90</color>
<color name="purple_primary">@color/purple_80</color>
<color name="purple_on_primary">@color/purple_20</color>
<color name="purple_primary_inverse">@color/purple_40</color>
<color name="purple_primary_container">@color/purple_30</color>
<color name="purple_on_primary_container">@color/purple_90</color>
<color name="deep_purple_primary">@color/deep_purple_80</color>
<color name="deep_purple_on_primary">@color/deep_purple_20</color>
<color name="deep_purple_primary_inverse">@color/deep_purple_40</color>
<color name="deep_purple_primary_container">@color/deep_purple_30</color>
<color name="deep_purple_on_primary_container">@color/deep_purple_90</color>
<color name="indigo_primary">@color/indigo_80</color>
<color name="indigo_on_primary">@color/indigo_20</color>
<color name="indigo_primary_inverse">@color/indigo_40</color>
<color name="indigo_primary_container">@color/indigo_30</color>
<color name="indigo_on_primary_container">@color/indigo_90</color>
<color name="blue_primary">@color/blue_80</color>
<color name="blue_on_primary">@color/blue_20</color>
<color name="blue_primary_inverse">@color/blue_40</color>
<color name="blue_primary_container">@color/blue_30</color>
<color name="blue_on_primary_container">@color/blue_90</color>
<color name="light_blue_primary">@color/light_blue_80</color>
<color name="light_blue_on_primary">@color/light_blue_20</color>
<color name="light_blue_primary_inverse">@color/light_blue_40</color>
<color name="light_blue_primary_container">@color/light_blue_30</color>
<color name="light_blue_on_primary_container">@color/light_blue_90</color>
<color name="cyan_primary">@color/cyan_80</color>
<color name="cyan_on_primary">@color/cyan_20</color>
<color name="cyan_primary_inverse">@color/cyan_40</color>
<color name="cyan_primary_container">@color/cyan_30</color>
<color name="cyan_on_primary_container">@color/cyan_90</color>
<color name="teal_primary">@color/teal_80</color>
<color name="teal_on_primary">@color/teal_20</color>
<color name="teal_primary_inverse">@color/teal_40</color>
<color name="teal_primary_container">@color/teal_30</color>
<color name="teal_on_primary_container">@color/teal_90</color>
<color name="green_primary">@color/green_80</color>
<color name="green_on_primary">@color/green_20</color>
<color name="green_primary_inverse">@color/green_40</color>
<color name="green_primary_container">@color/green_30</color>
<color name="green_on_primary_container">@color/green_90</color>
<color name="light_green_primary">@color/light_green_80</color>
<color name="light_green_on_primary">@color/light_green_20</color>
<color name="light_green_primary_inverse">@color/light_green_40</color>
<color name="light_green_primary_container">@color/light_green_30</color>
<color name="light_green_on_primary_container">@color/light_green_90</color>
<color name="lime_primary">@color/lime_80</color>
<color name="lime_on_primary">@color/lime_20</color>
<color name="lime_primary_inverse">@color/lime_40</color>
<color name="lime_primary_container">@color/lime_30</color>
<color name="lime_on_primary_container">@color/lime_90</color>
<color name="yellow_primary">@color/yellow_80</color>
<color name="yellow_on_primary">@color/yellow_20</color>
<color name="yellow_primary_inverse">@color/yellow_40</color>
<color name="yellow_primary_container">@color/yellow_30</color>
<color name="yellow_on_primary_container">@color/yellow_90</color>
<color name="orange_primary">@color/orange_80</color>
<color name="orange_on_primary">@color/orange_20</color>
<color name="orange_primary_inverse">@color/orange_40</color>
<color name="orange_primary_container">@color/orange_30</color>
<color name="orange_on_primary_container">@color/orange_90</color>
<color name="deep_orange_primary">@color/deep_orange_80</color>
<color name="deep_orange_on_primary">@color/deep_orange_20</color>
<color name="deep_orange_primary_inverse">@color/deep_orange_40</color>
<color name="deep_orange_primary_container">@color/deep_orange_30</color>
<color name="deep_orange_on_primary_container">@color/deep_orange_90</color>
<color name="brown_primary">@color/brown_80</color>
<color name="brown_on_primary">@color/brown_20</color>
<color name="brown_primary_inverse">@color/brown_40</color>
<color name="brown_primary_container">@color/brown_30</color>
<color name="brown_on_primary_container">@color/brown_90</color>
<color name="grey_primary">@color/grey_80</color>
<color name="grey_on_primary">@color/grey_20</color>
<color name="grey_primary_inverse">@color/grey_40</color>
<color name="grey_primary_container">@color/grey_30</color>
<color name="grey_on_primary_container">@color/grey_90</color>
<color name="blue_grey_primary">@color/blue_grey_80</color>
<color name="blue_grey_on_primary">@color/blue_grey_20</color>
<color name="blue_grey_primary_inverse">@color/blue_grey_40</color>
<color name="blue_grey_primary_container">@color/blue_grey_30</color>
<color name="blue_grey_on_primary_container">@color/blue_grey_90</color>
</resources>

View file

@ -8,7 +8,6 @@
<string name="lbl_retry">Opnieuw proberen</string>
<string name="lbl_grant">Toestaan</string>
<string name="lbl_library">Bibliotheek</string>
<string name="lbl_genres">Genres</string>
<string name="lbl_artists">Artiesten</string>
<string name="lbl_albums">Albums</string>
@ -63,9 +62,6 @@
<string name="set_accent">Accent</string>
<string name="set_display">Scherm</string>
<string name="set_lib_display">Bibliotheek Items</string>
<string name="set_color_notif">Notificatie kleur aanpassen</string>
<string name="set_color_notif_desc">Toon album art op notification</string>
<string name="set_show_covers">Toon albumhoezen</string>
<string name="set_show_covers_desc">Schakel uit om geheugengebruik te besparen</string>
<string name="set_quality_covers">Negeer Mediaopslag illustraties</string>
@ -104,7 +100,6 @@
<string name="hint_search_library">Zoek in uw bibliotheek…</string>
<!-- Description Namespace | Accessibility Strings -->
<string name="desc_sort">Sorteervolgorde wijzigen</string>
<string name="desc_track_number">Nummer %d</string>
<string name="desc_play_pause">Afspelen/Pauzeren</string>
@ -123,8 +118,6 @@
<!-- Placeholder Namespace | Placeholder values -->
<string name="def_genre">Onbekend Genre</string>
<string name="def_artist">Onbekend Artist</string>
<string name="def_album">Onbekend Album</string>
<string name="def_date">Geen datum </string>
<!-- Color Label namespace | Accent names -->
@ -143,8 +136,8 @@
<string name="clr_yellow">Geel</string>
<string name="clr_orange">Oranje</string>
<string name="clr_deep_orange">Dieporanje</string>
<string name="clr_label_brown">Bruin</string>
<string name="clr_label_grey">Grijis</string>
<string name="clr_brown">Bruin</string>
<string name="clr_grey">Grijis</string>
<string name="clr_blue_grey">Blauwgrijis</string>
<!-- Format Namespace | Value formatting/plurals -->

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">Ponów</string>
<string name="lbl_grant">Przyznaj</string>
<string name="lbl_library">Biblioteka</string>
<string name="lbl_genres">Gatunki</string>
<string name="lbl_artists">Wykonawcy</string>
<string name="lbl_albums">Albumy</string>
@ -47,7 +46,6 @@
<string name="set_theme_night">Ciemny</string>
<string name="set_accent">Odcień koloru</string>
<string name="set_color_notif">Pokolorowanie powiadomienia</string>
<string name="set_quality_covers">Ignoruj okładki z Media Store</string>
<string name="set_audio">Dźwięk</string>
@ -81,8 +79,8 @@
<string name="clr_lime">Żółtyzielony</string>
<string name="clr_yellow">Żółty</string>
<string name="clr_orange">Pomarańczowy</string>
<string name="clr_label_brown">Brązowy</string>
<string name="clr_label_grey">Szary</string>
<string name="clr_brown">Brązowy</string>
<string name="clr_grey">Szary</string>
<string name="clr_blue_grey">Błękitszary</string>
<!-- Format Namespace | Value formatting/plurals -->

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">Tentar novamente</string>
<string name="lbl_grant">Confirmar</string>
<string name="lbl_library">Biblioteca</string>
<string name="lbl_genres">Gêneros</string>
<string name="lbl_artists">Artistas</string>
<string name="lbl_albums">Álbuns</string>
@ -47,7 +46,6 @@
<string name="set_theme_night">Escuro</string>
<string name="set_accent">Cor de destaque</string>
<string name="set_color_notif">Colorir notificação</string>
<string name="set_quality_covers">Ignorar capas Media Store</string>
<string name="set_audio">Áudio</string>
@ -82,8 +80,8 @@
<string name="clr_lime">Verde-amarelo</string>
<string name="clr_yellow">Amarelo</string>
<string name="clr_orange">Laranja</string>
<string name="clr_label_brown">Moreno</string>
<string name="clr_label_grey">Grisalho</string>
<string name="clr_brown">Moreno</string>
<string name="clr_grey">Grisalho</string>
<string name="clr_blue_grey">Azul-grisalho</string>
<!-- Format Namespace | Value formatting/plurals -->

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">Tentar novamente</string>
<string name="lbl_grant">Permitir</string>
<string name="lbl_library">Biblioteca</string>
<string name="lbl_genres">Gêneros</string>
<string name="lbl_artists">Artistas</string>
<string name="lbl_albums">Álbuns</string>
@ -48,7 +47,6 @@
<string name="set_theme_auto">Automático</string>
<string name="set_accent">Cor de realce</string>
<string name="set_color_notif">Colorir notificação</string>
<string name="set_quality_covers">Ignorar capas Media Store</string>
<string name="set_audio">Áudio</string>
@ -83,8 +81,8 @@
<string name="clr_lime">Verde-amarelo</string>
<string name="clr_yellow">Amarelo</string>
<string name="clr_orange">Laranja</string>
<string name="clr_label_brown">Moreno</string>
<string name="clr_label_grey">Grisalho</string>
<string name="clr_brown">Moreno</string>
<string name="clr_grey">Grisalho</string>
<string name="clr_blue_grey">Azul-grisalho</string>
<!-- Format Namespace | Value formatting/plurals -->

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">Reîncearcă</string>
<string name="lbl_grant">Permiteți</string>
<string name="lbl_library">Bibliotecă</string>
<string name="lbl_genres">Genuri</string>
<string name="lbl_artists">Artiști</string>
<string name="lbl_albums">Albume</string>
@ -48,7 +47,6 @@
<string name="set_theme_night">Întunecat</string>
<string name="set_accent">Culoare accentuată</string>
<string name="set_color_notif">Colorează notificarea</string>
<string name="set_quality_covers">Ignoră coperțile Media Store</string>
<string name="set_audio">Audio</string>
@ -82,8 +80,8 @@
<string name="clr_lime">Verde Galben</string>
<string name="clr_yellow">Galben</string>
<string name="clr_orange">Portocaliu</string>
<string name="clr_label_brown">Brun</string>
<string name="clr_label_grey">Gri</string>
<string name="clr_brown">Brun</string>
<string name="clr_grey">Gri</string>
<string name="clr_blue_grey">Albastru Gri</string>
<!-- Format Namespace | Value formatting/plurals -->

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">Повторить попытку</string>
<string name="lbl_grant">Разрешить</string>
<string name="lbl_library">Библиотека</string>
<string name="lbl_genres">Жанры</string>
<string name="lbl_artists">Исполнители</string>
<string name="lbl_albums">Альбомы</string>
@ -47,7 +46,6 @@
<string name="set_theme_night">Темная</string>
<string name="set_accent">Акцент</string>
<string name="set_color_notif">Цветное уведомление</string>
<string name="set_quality_covers">Игнорировать хранилище обложек альбомов</string>
<string name="set_audio">Аудио</string>
@ -80,7 +78,7 @@
<string name="clr_yellow">Оранжевый</string>
<string name="clr_light_green">Жёлтый</string>
<string name="clr_orange">Коричневый</string>
<string name="clr_label_brown">Седой</string>
<string name="clr_brown">Седой</string>
<string name="clr_blue_grey">Нейтральный</string>
<!-- Format Namespace | Value formatting/plurals -->

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">Yeniden dene</string>
<string name="lbl_grant">İzin</string>
<string name="lbl_library">Kitaplık</string>
<string name="lbl_genres">Türler</string>
<string name="lbl_artists">Sanatçılar</string>
<string name="lbl_albums">Albümler</string>
@ -47,7 +46,6 @@
<string name="set_theme_night">Koyu</string>
<string name="set_accent">Ana Renk</string>
<string name="set_color_notif">Bildirimi renklendir</string>
<string name="set_quality_covers">Medya Deposu albüm kapağını yoksay</string>
<string name="set_audio">Ses</string>

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">Повторити спробу</string>
<string name="lbl_grant">Надати</string>
<string name="lbl_library">Бібліотека</string>
<string name="lbl_genres">Жанри</string>
<string name="lbl_artists">Виконавці</string>
<string name="lbl_albums">Альбоми</string>

View file

@ -1,12 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Android 12 Splashscreen config -->
<!-- Android 12 configuration -->
<style name="Theme.Auxio.V31" parent="Theme.Auxio.V27">
<!-- Make our splash drawable only the foreground -->
<item name="android:windowSplashScreenAnimatedIcon">@drawable/ic_launcher_foreground</item>
<!--
Theme.Material3.DayNight doesn't actually apply dynamic colors by default. No.
You have to apply a T H E M E O V E R L A Y for them to work. Except the ThemeOverlay
causes appbars to become a completely different color for basically no reason! Guess
we have to manually ctrl-c ctrl-v these values into our V31 styles instead!
Why do I keep developing for this platform why do I keep developing for this platform why
-->
<!-- Color palettes -->
<item name="colorPrimary">@color/m3_sys_color_dynamic_light_primary</item>
<item name="colorOnPrimary">@color/m3_sys_color_dynamic_light_on_primary</item>
<item name="colorPrimaryInverse">@color/m3_sys_color_dynamic_light_inverse_primary</item>
<item name="colorPrimaryContainer">@color/m3_sys_color_dynamic_light_primary_container</item>
<item name="colorOnPrimaryContainer">@color/m3_sys_color_dynamic_light_on_primary_container</item>
<item name="colorSecondary">@color/m3_sys_color_dynamic_light_secondary</item>
<item name="colorOnSecondary">@color/m3_sys_color_dynamic_light_on_secondary</item>
<item name="colorSecondaryContainer">@color/m3_sys_color_dynamic_light_secondary_container</item>
<item name="colorOnSecondaryContainer">@color/m3_sys_color_dynamic_light_on_secondary_container</item>
<item name="colorTertiary">@color/m3_sys_color_dynamic_light_tertiary</item>
<item name="colorOnTertiary">@color/m3_sys_color_dynamic_light_on_tertiary</item>
<item name="colorTertiaryContainer">@color/m3_sys_color_dynamic_light_tertiary_container</item>
<item name="colorOnTertiaryContainer">@color/m3_sys_color_dynamic_light_on_tertiary_container</item>
<item name="android:colorBackground">@color/m3_sys_color_dynamic_light_background</item>
<item name="colorOnBackground">@color/m3_sys_color_dynamic_light_on_background</item>
<item name="colorSurface">@color/m3_sys_color_dynamic_light_surface</item>
<item name="colorOnSurface">@color/m3_sys_color_dynamic_light_on_surface</item>
<item name="colorSurfaceVariant">@color/m3_sys_color_dynamic_light_surface_variant</item>
<item name="colorOnSurfaceVariant">@color/m3_sys_color_dynamic_light_on_surface_variant</item>
<item name="colorSurfaceInverse">@color/m3_sys_color_dynamic_light_inverse_surface</item>
<item name="colorOnSurfaceInverse">@color/m3_sys_color_dynamic_light_inverse_on_surface</item>
<item name="colorOutline">@color/m3_sys_color_dynamic_light_outline</item>
<item name="colorError">@color/m3_sys_color_light_error</item>
<item name="colorOnError">@color/m3_sys_color_light_on_error</item>
<item name="colorErrorContainer">@color/m3_sys_color_light_error_container</item>
<item name="colorOnErrorContainer">@color/m3_sys_color_light_on_error_container</item>
<!-- Default Framework Text Colors. -->
<item name="android:textColorPrimary">@color/m3_dynamic_default_color_primary_text</item>
<item name="android:textColorPrimaryInverse">@color/m3_dynamic_dark_default_color_primary_text</item>
<item name="android:textColorSecondary">@color/m3_dynamic_default_color_secondary_text</item>
<item name="android:textColorSecondaryInverse">@color/m3_dynamic_dark_default_color_secondary_text</item>
<item name="android:textColorTertiary">@color/m3_dynamic_default_color_secondary_text</item>
<item name="android:textColorTertiaryInverse">@color/m3_dynamic_dark_default_color_secondary_text</item>
<item name="android:textColorPrimaryDisableOnly">@color/m3_dynamic_primary_text_disable_only</item>
<item name="android:textColorPrimaryInverseDisableOnly">@color/m3_dynamic_dark_primary_text_disable_only</item>
<item name="android:textColorHint">@color/m3_dynamic_hint_foreground</item>
<item name="android:textColorHintInverse">@color/m3_dynamic_dark_hint_foreground</item>
<item name="android:textColorHighlight">@color/m3_dynamic_highlighted_text</item>
<item name="android:textColorHighlightInverse">@color/m3_dynamic_dark_highlighted_text</item>
<item name="android:textColorAlertDialogListItem">@color/m3_dynamic_default_color_primary_text</item>
</style>
<style name="Theme.Widget" parent="@android:style/Theme.DeviceDefault.DayNight">
<item name="colorAccent">?android:attr/colorAccent</item>
<item name="colorPrimary">?android:attr/colorAccent</item>
<item name="colorSecondary">?android:attr/colorAccent</item>
<item name="colorControlNormal">?android:attr/colorControlNormal</item>
<item name="colorControlHighlight">?android:attr/colorControlHighlight</item>

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">重试</string>
<string name="lbl_grant">授予</string>
<string name="lbl_library">媒体库</string>
<string name="lbl_genres">流派</string>
<string name="lbl_artists">艺术家</string>
<string name="lbl_albums">专辑</string>

View file

@ -4,7 +4,6 @@
<string name="lbl_retry">重試</string>
<string name="lbl_grant">取得</string>
<string name="lbl_library">音樂庫</string>
<string name="lbl_genres">類型</string>
<string name="lbl_artists">演出者</string>
<string name="lbl_albums">專輯</string>
@ -46,7 +45,6 @@
<string name="set_theme_night">深色</string>
<string name="set_accent">自定義</string>
<string name="set_color_notif">彩色通知</string>
<string name="set_quality_covers">忽略音訊檔內嵌的專輯封面</string>
<string name="set_audio">音訊</string>

View file

@ -12,18 +12,6 @@
<item>@integer/theme_dark</item>
</integer-array>
<string-array name="entries_lib_display">
<item>@string/lbl_genres</item>
<item>@string/lbl_artists</item>
<item>@string/lbl_albums</item>
</string-array>
<integer-array name="values_lib_display">
<item>@integer/display_genre</item>
<item>@integer/display_artist</item>
<item>@integer/display_album</item>
</integer-array>
<array name="entries_song_playback_mode">
<item>@string/lbl_play_all</item>
<item>@string/lbl_play_artist</item>

View file

@ -5,25 +5,114 @@
<color name="nav_bar">#01fafafa</color>
<!--
Base color set derived from Music Player GO.
https://github.com/enricocid/Music-Player-GO
Each accent's color roles.
Note that some accents might have different tones used for legibility. Those are not errors.
-->
<color name="red">#f44336</color>
<color name="pink">#e91e63</color>
<color name="purple">#9c27b0</color>
<color name="deep_purple">#673ab7</color>
<color name="indigo">#3f51b5</color>
<color name="blue">#2196f3</color>
<color name="light_blue">#03a9f4</color>
<color name="cyan">#00bcd4</color>
<color name="teal">#009688</color>
<color name="green">#4caf50</color>
<color name="light_green">#8bc34a</color>
<color name="lime">#B7C534</color>
<color name="yellow">#E4AC00</color>
<color name="orange">#E68A01</color>
<color name="deep_orange">#ff5722</color>
<color name="brown">#795548</color>
<color name="grey">#808080</color>
<color name="blue_grey">#607d8b</color>
<color name="red_primary">@color/red_40</color>
<color name="red_on_primary">@color/red_100</color>
<color name="red_primary_inverse">@color/red_80</color>
<color name="red_primary_container">@color/red_90</color>
<color name="red_on_primary_container">@color/red_10</color>
<color name="pink_primary">@color/pink_40</color>
<color name="pink_on_primary">@color/pink_100</color>
<color name="pink_primary_inverse">@color/pink_80</color>
<color name="pink_primary_container">@color/pink_90</color>
<color name="pink_on_primary_container">@color/pink_10</color>
<color name="purple_primary">@color/purple_40</color>
<color name="purple_on_primary">@color/purple_100</color>
<color name="purple_primary_inverse">@color/purple_80</color>
<color name="purple_primary_container">@color/purple_90</color>
<color name="purple_on_primary_container">@color/purple_10</color>
<color name="deep_purple_primary">@color/deep_purple_40</color>
<color name="deep_purple_on_primary">@color/deep_purple_100</color>
<color name="deep_purple_primary_inverse">@color/deep_purple_80</color>
<color name="deep_purple_primary_container">@color/deep_purple_90</color>
<color name="deep_purple_on_primary_container">@color/deep_purple_10</color>
<color name="indigo_primary">@color/indigo_40</color>
<color name="indigo_on_primary">@color/indigo_100</color>
<color name="indigo_primary_inverse">@color/indigo_80</color>
<color name="indigo_primary_container">@color/indigo_90</color>
<color name="indigo_on_primary_container">@color/indigo_10</color>
<color name="blue_primary">@color/blue_40</color>
<color name="blue_on_primary">@color/blue_100</color>
<color name="blue_primary_inverse">@color/blue_80</color>
<color name="blue_primary_container">@color/blue_90</color>
<color name="blue_on_primary_container">@color/blue_10</color>
<color name="light_blue_primary">@color/light_blue_40</color>
<color name="light_blue_on_primary">@color/light_blue_100</color>
<color name="light_blue_primary_inverse">@color/light_blue_80</color>
<color name="light_blue_primary_container">@color/light_blue_90</color>
<color name="light_blue_on_primary_container">@color/light_blue_10</color>
<color name="cyan_primary">@color/cyan_40</color>
<color name="cyan_on_primary">@color/cyan_100</color>
<color name="cyan_primary_inverse">@color/cyan_80</color>
<color name="cyan_primary_container">@color/cyan_90</color>
<color name="cyan_on_primary_container">@color/cyan_10</color>
<color name="teal_primary">@color/teal_40</color>
<color name="teal_on_primary">@color/teal_100</color>
<color name="teal_primary_inverse">@color/teal_80</color>
<color name="teal_primary_container">@color/teal_90</color>
<color name="teal_on_primary_container">@color/teal_10</color>
<color name="green_primary">@color/green_40</color>
<color name="green_on_primary">@color/green_100</color>
<color name="green_primary_inverse">@color/green_80</color>
<color name="green_primary_container">@color/green_90</color>
<color name="green_on_primary_container">@color/green_10</color>
<color name="light_green_primary">@color/light_green_40</color>
<color name="light_green_on_primary">@color/light_green_100</color>
<color name="light_green_primary_inverse">@color/light_green_80</color>
<color name="light_green_primary_container">@color/light_green_90</color>
<color name="light_green_on_primary_container">@color/light_green_10</color>
<color name="lime_primary">@color/lime_40</color>
<color name="lime_on_primary">@color/lime_100</color>
<color name="lime_primary_inverse">@color/lime_80</color>
<color name="lime_primary_container">@color/lime_90</color>
<color name="lime_on_primary_container">@color/lime_10</color>
<color name="yellow_primary">@color/yellow_40</color>
<color name="yellow_on_primary">@color/yellow_100</color>
<color name="yellow_primary_inverse">@color/yellow_80</color>
<color name="yellow_primary_container">@color/yellow_90</color>
<color name="yellow_on_primary_container">@color/yellow_10</color>
<color name="orange_primary">@color/orange_40</color>
<color name="orange_on_primary">@color/orange_100</color>
<color name="orange_primary_inverse">@color/orange_80</color>
<color name="orange_primary_container">@color/orange_90</color>
<color name="orange_on_primary_container">@color/orange_10</color>
<color name="deep_orange_primary">@color/deep_orange_40</color>
<color name="deep_orange_on_primary">@color/deep_orange_100</color>
<color name="deep_orange_primary_inverse">@color/deep_orange_80</color>
<color name="deep_orange_primary_container">@color/deep_orange_90</color>
<color name="deep_orange_on_primary_container">@color/deep_orange_10</color>
<color name="brown_primary">@color/brown_40</color>
<color name="brown_on_primary">@color/brown_100</color>
<color name="brown_primary_inverse">@color/brown_80</color>
<color name="brown_primary_container">@color/brown_90</color>
<color name="brown_on_primary_container">@color/brown_10</color>
<color name="grey_primary">@color/grey_40</color>
<color name="grey_on_primary">@color/grey_100</color>
<color name="grey_primary_inverse">@color/grey_80</color>
<color name="grey_primary_container">@color/grey_70</color>
<color name="grey_on_primary_container">@color/grey_10</color>
<color name="blue_grey_primary">@color/blue_grey_40</color>
<color name="blue_grey_on_primary">@color/blue_grey_100</color>
<color name="blue_grey_primary_inverse">@color/blue_grey_80</color>
<color name="blue_grey_primary_container">@color/blue_grey_90</color>
<color name="blue_grey_on_primary_container">@color/blue_grey_10</color>
</resources>

View file

@ -34,7 +34,6 @@
<!-- Misc -->
<dimen name="elevation_small">2dp</dimen>
<dimen name="elevation_normal">4dp</dimen>
<dimen name="elevation_large">8dp</dimen>
<dimen name="offset_thumb">4dp</dimen>
</resources>

View file

@ -4,10 +4,6 @@
<integer name="theme_light">1</integer>
<integer name="theme_dark">2</integer>
<integer name="display_genre">0xA108</integer>
<integer name="display_artist">0xA109</integer>
<integer name="display_album">0xA10A</integer>
<integer name="play_mode_genre">0xA103</integer>
<integer name="play_mode_artist">0xA104</integer>
<integer name="play_mode_album">0xA105</integer>

View file

@ -0,0 +1,152 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--
Each accent's color palette.
Each color here follows the Material3 notation for describing shades, with 0 being black and
100 being white.
-->
<color name="red_10">#B71C1C</color>
<color name="red_20">#C62828</color>
<color name="red_30">#D32F2F</color>
<color name="red_40">#E53935</color>
<color name="red_80">#EF9A9A</color>
<color name="red_90">#FFCDD2</color>
<color name="red_100">#FFFFFF</color>
<color name="pink_10">#880E4F</color>
<color name="pink_20">#AD1457</color>
<color name="pink_30">#C2185B</color>
<color name="pink_40">#D81B60</color>
<color name="pink_80">#F48FB1</color>
<color name="pink_90">#F8BBD0</color>
<color name="pink_100">#FFFFFF</color>
<color name="purple_10">#4A148C</color>
<color name="purple_20">#6A1B9A</color>
<color name="purple_30">#7B1FA2</color>
<color name="purple_40">#8E24AA</color>
<color name="purple_80">#CE93D8</color>
<color name="purple_90">#F8BBD0</color>
<color name="purple_100">#E1BEE7</color>
<color name="deep_purple_10">#311B92</color>
<color name="deep_purple_20">#4527A0</color>
<color name="deep_purple_30">#512DA8</color>
<color name="deep_purple_40">#5E35B1</color>
<color name="deep_purple_80">#B39DDB</color>
<color name="deep_purple_90">#D1C4E9</color>
<color name="deep_purple_100">#FFFFFF</color>
<color name="indigo_10">#1A237E</color>
<color name="indigo_20">#283593</color>
<color name="indigo_30">#303F9F</color>
<color name="indigo_40">#3949AB</color>
<color name="indigo_80">#9FA8DA</color>
<color name="indigo_90">#C5CAE9</color>
<color name="indigo_100">#FFFFFF</color>
<color name="blue_10">#0D47A1</color>
<color name="blue_20">#1565C0</color>
<color name="blue_30">#1976D2</color>
<color name="blue_40">#1E88E5</color>
<color name="blue_80">#90CAF9</color>
<color name="blue_90">#BBDEFB</color>
<color name="blue_100">#FFFFFF</color>
<color name="light_blue_10">#01579B</color>
<color name="light_blue_20">#0277BD</color>
<color name="light_blue_30">#0288D1</color>
<color name="light_blue_40">#039BE5</color>
<color name="light_blue_80">#81D4FA</color>
<color name="light_blue_90">#B3E5FC</color>
<color name="light_blue_100">#FFFFFF</color>
<color name="cyan_10">#006064</color>
<color name="cyan_20">#00838F</color>
<color name="cyan_30">#0097A7</color>
<color name="cyan_40">#00ACC1</color>
<color name="cyan_80">#80DEEA</color>
<color name="cyan_90">#B2EBF2</color>
<color name="cyan_100">#FFFFFF</color>
<color name="teal_10">#004D40</color>
<color name="teal_20">#00695C</color>
<color name="teal_30">#00796B</color>
<color name="teal_40">#00897B</color>
<color name="teal_80">#80CBC4</color>
<color name="teal_90">#B2DFDB</color>
<color name="teal_100">#FFFFFF</color>
<color name="green_10">#1B5E20</color>
<color name="green_20">#2E7D32</color>
<color name="green_30">#388E3C</color>
<color name="green_40">#43A047</color>
<color name="green_80">#A5D6A7</color>
<color name="green_90">#C8E6C9</color>
<color name="green_100">#FFFFFF</color>
<color name="light_green_10">#33691E</color>
<color name="light_green_20">#558B2F</color>
<color name="light_green_30">#689F38</color>
<color name="light_green_40">#7CB342</color>
<color name="light_green_80">#C5E1A5</color>
<color name="light_green_90">#DCEDC8</color>
<color name="light_green_100">#FFFFFF</color>
<color name="lime_10">#827717</color>
<color name="lime_20">#9E9D24</color>
<color name="lime_30">#AFB42B</color>
<color name="lime_40">#C0CA33</color>
<color name="lime_80">#E6EE9C</color>
<color name="lime_90">#F0F4C3</color>
<color name="lime_100">#FFFFFF</color>
<color name="yellow_10">#FF6F00</color>
<color name="yellow_20">#FF8F00</color>
<color name="yellow_30">#FFA000</color>
<color name="yellow_40">#FFB300</color>
<color name="yellow_80">#FFE082</color>
<color name="yellow_90">#FFECB3</color>
<color name="yellow_100">#FFFFFF</color>
<color name="orange_10">#E65100</color>
<color name="orange_20">#EF6C00</color>
<color name="orange_30">#F57C00</color>
<color name="orange_40">#FB8C00</color>
<color name="orange_80">#FFCC80</color>
<color name="orange_90">#FFE0B2</color>
<color name="orange_100">#FFFFFF</color>
<color name="deep_orange_10">#BF360C</color>
<color name="deep_orange_20">#D84315</color>
<color name="deep_orange_30">#E64A19</color>
<color name="deep_orange_40">#F4511E</color>
<color name="deep_orange_80">#FFAB91</color>
<color name="deep_orange_90">#FFCCBC</color>
<color name="deep_orange_100">#FFFFFF</color>
<color name="brown_10">#3E2723</color>
<color name="brown_20">#4E342E</color>
<color name="brown_30">#5D4037</color>
<color name="brown_40">#6D4C41</color>
<color name="brown_80">#BCAAA4</color>
<color name="brown_90">#D7CCC8</color>
<color name="brown_100">#FFFFFF</color>
<color name="grey_10">#212121</color>
<color name="grey_20">#424242</color>
<color name="grey_30">#616161</color>
<color name="grey_40">#757575</color>
<color name="grey_70">#e0e0e0</color>
<color name="grey_80">#EEEEEE</color>
<color name="grey_90">#F5F5F5</color>
<color name="grey_100">#FFFFFF</color>
<color name="blue_grey_10">#263238</color>
<color name="blue_grey_20">#37474F</color>
<color name="blue_grey_30">#455A64</color>
<color name="blue_grey_40">#546E7A</color>
<color name="blue_grey_80">#B0BEC5</color>
<color name="blue_grey_90">#CFD8DC</color>
<color name="blue_grey_100">#FFFFFF</color>
</resources>

View file

@ -11,7 +11,6 @@
<string name="lbl_retry">Retry</string>
<string name="lbl_grant">Grant</string>
<string name="lbl_library">Library</string>
<string name="lbl_genres">Genres</string>
<string name="lbl_artists">Artists</string>
<string name="lbl_albums">Albums</string>
@ -71,13 +70,10 @@
<string name="setting_black_mode_desc">Use a pure-black dark theme</string>
<string name="set_display">Display</string>
<string name="set_lib_display">Library Items</string>
<string name="set_color_notif">Colorize notification</string>
<string name="set_color_notif_desc">Show album art on notification</string>
<string name="set_show_covers">Show album covers</string>
<string name="set_show_covers_desc">Turn off to save memory usage</string>
<string name="set_quality_covers">Ignore MediaStore covers</string>
<string name="set_quality_covers_desc">Increases the quality of the album covers, but results in longer loading times and higher memory usage</string>
<string name="set_quality_covers_desc">Increases album cover quality, but results in longer loading times and higher memory usage</string>
<string name="set_alt_action">Use alternate notification action</string>
<string name="set_alt_loop">Prefer repeat mode action</string>
<string name="set_alt_shuffle">Prefer shuffle action</string>
@ -136,8 +132,6 @@
<!-- Default Namespace | Placeholder values -->
<string name="def_genre">Unknown Genre</string>
<string name="def_artist">Unknown Artist</string>
<string name="def_album">Unknown Album</string>
<string name="def_date">No Date</string>
<string name="def_playback">No music playing</string>
<string name="def_widget_song">Song Name</string>
@ -159,8 +153,8 @@
<string name="clr_yellow">Yellow</string>
<string name="clr_orange">Orange</string>
<string name="clr_deep_orange">Deep Orange</string>
<string name="clr_label_brown">Brown</string>
<string name="clr_label_grey">Grey</string>
<string name="clr_brown">Brown</string>
<string name="clr_grey">Grey</string>
<string name="clr_blue_grey">Blue Grey</string>
<!-- Format Namespace | Value formatting/plurals -->

View file

@ -13,27 +13,25 @@
</style>
<!-- Custom dialog title theme -->
<style name="Widget.Auxio.Dialog.TextView" parent="MaterialAlertDialog.MaterialComponents.Title.Text">
<style name="Widget.Auxio.Dialog.TextView" parent="MaterialAlertDialog.Material3.Title.Text">
<item name="android:fontFamily">@font/inter_bold</item>
<item name="android:textColor">?android:attr/textColorPrimary</item>
<item name="android:textSize">@dimen/text_size_large</item>
</style>
<!-- The style for the checked text view in the custom dialog -->
<style name="Widget.Auxio.Dialog.CheckedTextView" parent="Widget.MaterialComponents.CheckedTextView">
<style name="Widget.Auxio.Dialog.CheckedTextView" parent="Widget.Material3.CheckedTextView">
<item name="android:textColor">?android:attr/textColorPrimary</item>
<item name="android:textSize">@dimen/text_size_medium</item>
<item name="android:background">@null</item>
</style>
<!-- Style for dialog buttons -->
<style name="Widget.Auxio.Dialog.Button" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
<style name="Widget.Auxio.Dialog.Button" parent="Widget.Material3.Button.TextButton.Dialog">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:fontFamily">@font/inter_semibold</item>
<item name="android:textColor">?attr/colorAccent</item>
<item name="android:textAppearance">?android:attr/textAppearanceButton</item>
<item name="cornerRadius">0dp</item>
<item name="android:textColor">?attr/colorPrimary</item>
</style>
<!-- Custom button style that eliminates the weird margin that the neutral button has -->

View file

@ -1,49 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Master parent theme based off of Theme.MaterialComponents.DayNight.NoActionBar.Bridge -->
<style name="Theme.Auxio" parent="Theme.MaterialComponents.DayNight.NoActionBar" />
<style name="Theme.Auxio" parent="Theme.Material3.DayNight.NoActionBar" />
<!-- Template theme that handles edge-to-edge on other styles variants -->
<style name="Theme.Auxio.V27" parent="Theme.Auxio" />
<!-- Android 12 Splashscreen config -->
<style name="Theme.Auxio.V31" parent="Theme.Auxio.V27" />
<!-- Android 12 configuration -->
<style name="Theme.Auxio.V31" parent="Theme.Auxio.V27">
<item name="colorSecondary">?attr/colorPrimary</item>
<item name="colorOnSecondary">?attr/colorOnPrimary</item>
<item name="colorSecondaryContainer">?attr/colorPrimaryContainer</item>
<item name="colorOnSecondaryContainer">?attr/colorOnPrimaryContainer</item>
<item name="colorTertiary">?attr/colorPrimary</item>
<item name="colorOnTertiary">?attr/colorOnPrimary</item>
<item name="colorTertiaryContainer">?attr/colorPrimaryContainer</item>
<item name="colorOnTertiaryContainer">?attr/colorOnPrimaryContainer</item>
<item name="colorSurface">@color/surface</item>
<item name="colorControlNormal">@color/control</item>
<item name="colorControlHighlight">@color/overlay_selection</item>
<item name="colorControlActivated">?attr/colorPrimary</item>
<item name="colorAccent">?attr/colorPrimary</item>
</style>>
<!-- Base theme -->
<style name="Theme.Auxio.App" parent="Theme.Auxio.V31">
<!-- Colors -->
<item name="colorSurface">@color/surface</item>
<item name="colorAccent">@color/blue</item>
<item name="colorPrimary">?attr/colorAccent</item>
<item name="colorOnPrimary">?attr/colorSurface</item>
<item name="colorSecondary">?attr/colorAccent</item>
<item name="colorOnSecondary">?attr/colorSurface</item>
<item name="colorControlNormal">@color/control</item>
<item name="colorControlHighlight">@color/overlay_selection</item>
<item name="colorControlActivated">?attr/colorAccent</item>
<!--
Use the accent color as the elevation overlay color on dark mode. It's just more visually
appealing then a grey-ish color that sticks out like a sore thumb. Technically this is
actually a part of Material3, but that is still unstable, so I just copied this element
for now.
-->
<item name="elevationOverlayColor">?attr/colorPrimary</item>
<!-- Values -->
<item name="colorOutline">@color/overlay_stroke</item>
<!-- Appearance -->
<item name="android:windowBackground">?attr/colorSurface</item>
<item name="android:colorBackground">?attr/colorSurface</item>
<item name="android:windowBackground">?attr/colorSurface</item>
<item name="android:fontFamily">@font/inter</item>
<item name="android:textCursorDrawable">@drawable/ui_cursor</item>
<item name="cornerRadius">0dp</item>
<!-- System-specific magic -->
<item name="android:scrollbars">none</item>
<item name="android:windowIsFloating">false</item>
<!-- Material stuff -->
<!-- Material -->
<item name="textInputStyle">@null</item>
<item name="materialAlertDialogTheme">@style/Theme.Auxio.Dialog</item>
</style>

View file

@ -2,15 +2,11 @@
<resources>
<!-- SHARED RE-USABLE UI STYLES -->
<!-- VIEW STYLES -->
<!-- Base toolbar style -->
<style name="Widget.Auxio.Toolbar" parent="ThemeOverlay.MaterialComponents.ActionBar">
<style name="Widget.Auxio.Toolbar" parent="ThemeOverlay.Material3.ActionBar">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">?android:attr/actionBarSize</item>
<item name="titleTextAppearance">@style/TextAppearance.ToolbarTitle</item>
<item name="contentInsetStartWithNavigation">0dp</item>
</style>
<!-- Toolbar sub-style with a nav icon -->
@ -29,19 +25,15 @@
</style>
<style name="Widget.Auxio.ProgressBar" parent="Widget.AppCompat.ProgressBar.Horizontal">
<item name="android:progressBackgroundTint">?attr/colorAccent</item>
<item name="android:progressTint">?attr/colorAccent</item>
<item name="android:progressTint">?attr/colorPrimary</item>
<item name="android:progressBackgroundTint">?attr/colorSecondary</item>
</style>
<style name="Widget.Auxio.SeekBar" parent="Widget.AppCompat.SeekBar">
<item name="android:clickable">true</item>
<item name="android:focusable">true</item>
<item name="android:progressBackgroundTint">?attr/colorAccent</item>
<item name="android:progressTint">?attr/colorAccent</item>
<item name="android:splitTrack">false</item>
<item name="android:progressTint">?attr/colorPrimary</item>
<item name="android:progressBackgroundTint">?attr/colorSecondary</item>
<item name="android:thumbOffset">@dimen/offset_thumb</item>
<item name="android:thumbTint">?attr/colorAccent</item>
<item name="android:enabled">true</item>
<item name="android:thumbTint">?attr/colorPrimary</item>
<item name="android:minHeight">@dimen/size_btn_small</item>
<item name="android:theme">@style/ThemeOverlay.SeekbarHalo</item>
</style>
@ -65,11 +57,10 @@
<item name="android:layout_height">0dp</item>
</style>
<style name="TextAppearance.Auxio.TabLayout.Label" parent="@style/TextAppearance.Design.Tab">
<style name="TextAppearance.Auxio.TabLayout.Label" parent="TextAppearance.Material3.LabelLarge">
<item name="fontFamily">@font/inter_semibold</item>
<item name="android:fontFamily">@font/inter_semibold</item>
<item name="android:letterSpacing">0.01</item>
<item name="android:textSize">@dimen/text_size_small</item>
<item name="textAllCaps">false</item>
</style>
<style name="Widget.Auxio.ItemLayout" parent="">
@ -174,27 +165,17 @@
<item name="android:padding">@dimen/spacing_small</item>
</style>
<style name="Widget.Auxio.Button.Primary" parent="Widget.MaterialComponents.Button.TextButton">
<item name="android:letterSpacing">0.01</item>
<item name="android:textAllCaps">false</item>
<item name="android:backgroundTint">?attr/colorPrimary</item>
<style name="Widget.Auxio.Button.Primary" parent="Widget.Material3.Button.TextButton">
<item name="android:textSize">@dimen/text_size_small</item>
<item name="android:textColor">?attr/colorSurface</item>
<item name="android:insetTop">4dp</item>
<item name="android:insetBottom">4dp</item>
<item name="rippleColor">@color/mtrl_btn_ripple_color</item>
<item name="fontFamily">@font/inter_semibold</item>
<item name="cornerRadius">24dp</item>
<item name="android:backgroundTint">?attr/colorPrimary</item>
</style>
<style name="Widget.Auxio.Button.Secondary" parent="Widget.MaterialComponents.Button.OutlinedButton">
<item name="android:letterSpacing">0.01</item>
<item name="android:textAllCaps">false</item>
<style name="Widget.Auxio.Button.Secondary" parent="Widget.Material3.Button.OutlinedButton">
<item name="android:textSize">@dimen/text_size_small</item>
<item name="fontFamily">@font/inter_semibold</item>
<item name="android:insetTop">4dp</item>
<item name="android:insetBottom">4dp</item>
<item name="cornerRadius">24dp</item>
</style>
<style name="Widget.Auxio.Button.Circular" parent="">

View file

@ -4,78 +4,154 @@
All the base themes/accents.
-->
<style name="Theme.Auxio.Red" parent="Theme.Auxio.App">
<item name="colorAccent">@color/red</item>
<item name="colorPrimary">@color/red_primary</item>
<item name="colorOnPrimary">@color/red_on_primary</item>
<item name="colorPrimaryInverse">@color/red_primary_inverse</item>
<item name="colorPrimaryContainer">@color/red_primary_container</item>
<item name="colorOnPrimaryContainer">@color/red_on_primary_container</item>
</style>
<style name="Theme.Auxio.Pink" parent="Theme.Auxio.App">
<item name="colorAccent">@color/pink</item>
<item name="colorPrimary">@color/pink_primary</item>
<item name="colorOnPrimary">@color/pink_on_primary</item>
<item name="colorPrimaryInverse">@color/pink_primary_inverse</item>
<item name="colorPrimaryContainer">@color/pink_primary_container</item>
<item name="colorOnPrimaryContainer">@color/pink_on_primary_container</item>
</style>
<style name="Theme.Auxio.Purple" parent="Theme.Auxio.App">
<item name="colorAccent">@color/purple</item>
<item name="colorPrimary">@color/purple_primary</item>
<item name="colorOnPrimary">@color/purple_on_primary</item>
<item name="colorPrimaryInverse">@color/purple_primary_inverse</item>
<item name="colorPrimaryContainer">@color/purple_primary_container</item>
<item name="colorOnPrimaryContainer">@color/purple_on_primary_container</item>
</style>
<style name="Theme.Auxio.DeepPurple" parent="Theme.Auxio.App">
<item name="colorAccent">@color/deep_purple</item>
<item name="colorPrimary">@color/deep_purple_primary</item>
<item name="colorOnPrimary">@color/deep_purple_on_primary</item>
<item name="colorPrimaryInverse">@color/deep_purple_primary_inverse</item>
<item name="colorPrimaryContainer">@color/deep_purple_primary_container</item>
<item name="colorOnPrimaryContainer">@color/deep_purple_on_primary_container</item>
</style>
<style name="Theme.Auxio.Indigo" parent="Theme.Auxio.App">
<item name="colorAccent">@color/indigo</item>
<item name="colorPrimary">@color/indigo_primary</item>
<item name="colorOnPrimary">@color/indigo_on_primary</item>
<item name="colorPrimaryInverse">@color/indigo_primary_inverse</item>
<item name="colorPrimaryContainer">@color/indigo_primary_container</item>
<item name="colorOnPrimaryContainer">@color/indigo_on_primary_container</item>
</style>
<style name="Theme.Auxio.Blue" parent="Theme.Auxio.App">
<item name="colorAccent">@color/blue</item>
<item name="colorPrimary">@color/blue_primary</item>
<item name="colorOnPrimary">@color/blue_on_primary</item>
<item name="colorPrimaryInverse">@color/blue_primary_inverse</item>
<item name="colorPrimaryContainer">@color/blue_primary_container</item>
<item name="colorOnPrimaryContainer">@color/blue_on_primary_container</item>
</style>
<style name="Theme.Auxio.LightBlue" parent="Theme.Auxio.App">
<item name="colorAccent">@color/light_blue</item>
<item name="colorPrimary">@color/light_blue_primary</item>
<item name="colorOnPrimary">@color/light_blue_on_primary</item>
<item name="colorPrimaryInverse">@color/light_blue_primary_inverse</item>
<item name="colorPrimaryContainer">@color/light_blue_primary_container</item>
<item name="colorOnPrimaryContainer">@color/light_blue_on_primary_container</item>
</style>
<style name="Theme.Auxio.Cyan" parent="Theme.Auxio.App">
<item name="colorAccent">@color/cyan</item>
<item name="colorPrimary">@color/cyan_primary</item>
<item name="colorOnPrimary">@color/cyan_on_primary</item>
<item name="colorPrimaryInverse">@color/cyan_primary_inverse</item>
<item name="colorPrimaryContainer">@color/cyan_primary_container</item>
<item name="colorOnPrimaryContainer">@color/cyan_on_primary_container</item>
</style>
<style name="Theme.Auxio.Teal" parent="Theme.Auxio.App">
<item name="colorAccent">@color/teal</item>
<item name="colorPrimary">@color/teal_primary</item>
<item name="colorOnPrimary">@color/teal_on_primary</item>
<item name="colorPrimaryInverse">@color/teal_primary_inverse</item>
<item name="colorPrimaryContainer">@color/teal_primary_container</item>
<item name="colorOnPrimaryContainer">@color/teal_on_primary_container</item>
</style>
<style name="Theme.Auxio.Green" parent="Theme.Auxio.App">
<item name="colorAccent">@color/green</item>
<item name="colorPrimary">@color/green_primary</item>
<item name="colorOnPrimary">@color/green_on_primary</item>
<item name="colorPrimaryInverse">@color/green_primary_inverse</item>
<item name="colorPrimaryContainer">@color/green_primary_container</item>
<item name="colorOnPrimaryContainer">@color/green_on_primary_container</item>
</style>
<style name="Theme.Auxio.LightGreen" parent="Theme.Auxio.App">
<item name="colorAccent">@color/light_green</item>
<item name="colorPrimary">@color/light_green_primary</item>
<item name="colorOnPrimary">@color/light_green_on_primary</item>
<item name="colorPrimaryInverse">@color/light_green_primary_inverse</item>
<item name="colorPrimaryContainer">@color/light_green_primary_container</item>
<item name="colorOnPrimaryContainer">@color/light_green_on_primary_container</item>
</style>
<style name="Theme.Auxio.Lime" parent="Theme.Auxio.App">
<item name="colorAccent">@color/lime</item>
<item name="colorPrimary">@color/lime_primary</item>
<item name="colorOnPrimary">@color/lime_on_primary</item>
<item name="colorPrimaryInverse">@color/lime_primary_inverse</item>
<item name="colorPrimaryContainer">@color/lime_primary_container</item>
<item name="colorOnPrimaryContainer">@color/lime_on_primary_container</item>
</style>
<style name="Theme.Auxio.Yellow" parent="Theme.Auxio.App">
<item name="colorAccent">@color/yellow</item>
<item name="colorPrimary">@color/yellow_primary</item>
<item name="colorOnPrimary">@color/yellow_on_primary</item>
<item name="colorPrimaryInverse">@color/yellow_primary_inverse</item>
<item name="colorPrimaryContainer">@color/yellow_primary_container</item>
<item name="colorOnPrimaryContainer">@color/yellow_on_primary_container</item>
</style>
<style name="Theme.Auxio.Orange" parent="Theme.Auxio.App">
<item name="colorAccent">@color/orange</item>
<item name="colorPrimary">@color/orange_primary</item>
<item name="colorOnPrimary">@color/orange_on_primary</item>
<item name="colorPrimaryInverse">@color/orange_primary_inverse</item>
<item name="colorPrimaryContainer">@color/orange_primary_container</item>
<item name="colorOnPrimaryContainer">@color/orange_on_primary_container</item>
</style>
<style name="Theme.Auxio.DeepOrange" parent="Theme.Auxio.App">
<item name="colorAccent">@color/deep_orange</item>
<item name="colorPrimary">@color/deep_orange_primary</item>
<item name="colorOnPrimary">@color/deep_orange_on_primary</item>
<item name="colorPrimaryInverse">@color/deep_orange_primary_inverse</item>
<item name="colorPrimaryContainer">@color/deep_orange_primary_container</item>
<item name="colorOnPrimaryContainer">@color/deep_orange_on_primary_container</item>
</style>
<style name="Theme.Auxio.Brown" parent="Theme.Auxio.App">
<item name="colorAccent">@color/brown</item>
<item name="colorPrimary">@color/brown_primary</item>
<item name="colorOnPrimary">@color/brown_on_primary</item>
<item name="colorPrimaryInverse">@color/brown_primary_inverse</item>
<item name="colorPrimaryContainer">@color/brown_primary_container</item>
<item name="colorOnPrimaryContainer">@color/brown_on_primary_container</item>
</style>
<style name="Theme.Auxio.Grey" parent="Theme.Auxio.App">
<item name="colorAccent">@color/grey</item>
<item name="colorPrimary">@color/grey_primary</item>
<item name="colorOnPrimary">@color/grey_on_primary</item>
<item name="colorPrimaryInverse">@color/grey_primary_inverse</item>
<item name="colorPrimaryContainer">@color/grey_primary_container</item>
<item name="colorOnPrimaryContainer">@color/grey_on_primary_container</item>
</style>
<style name="Theme.Auxio.BlueGrey" parent="Theme.Auxio.App">
<item name="colorAccent">@color/blue_grey</item>
<item name="colorPrimary">@color/blue_grey_primary</item>
<item name="colorOnPrimary">@color/blue_grey_on_primary</item>
<item name="colorPrimaryInverse">@color/blue_grey_primary_inverse</item>
<item name="colorPrimaryContainer">@color/blue_grey_primary_container</item>
<item name="colorOnPrimaryContainer">@color/blue_grey_on_primary_container</item>
</style>
<style name="Theme.Auxio.Neutral" parent="Theme.Auxio.App">
<item name="colorAccent">@color/control</item>
<item name="colorPrimary">@color/control</item>
<item name="colorOnPrimary">@color/control</item>
<item name="colorPrimaryInverse">@color/control</item>
<item name="colorPrimaryContainer">@color/control</item>
<item name="colorOnPrimaryContainer">@color/control</item>
</style>
</resources>

View file

@ -4,74 +4,146 @@
All the base themes/accents.
-->
<style name="Theme.Auxio.Black.Red" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/red</item>
<item name="colorPrimary">@color/red_primary</item>
<item name="colorOnPrimary">@color/red_on_primary</item>
<item name="colorPrimaryInverse">@color/red_primary_inverse</item>
<item name="colorPrimaryContainer">@color/red_primary_container</item>
<item name="colorOnPrimaryContainer">@color/red_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.Pink" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/pink</item>
<item name="colorPrimary">@color/pink_primary</item>
<item name="colorOnPrimary">@color/pink_on_primary</item>
<item name="colorPrimaryInverse">@color/pink_primary_inverse</item>
<item name="colorPrimaryContainer">@color/pink_primary_container</item>
<item name="colorOnPrimaryContainer">@color/pink_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.Purple" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/purple</item>
<item name="colorPrimary">@color/purple_primary</item>
<item name="colorOnPrimary">@color/purple_on_primary</item>
<item name="colorPrimaryInverse">@color/purple_primary_inverse</item>
<item name="colorPrimaryContainer">@color/purple_primary_container</item>
<item name="colorOnPrimaryContainer">@color/purple_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.DeepPurple" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/deep_purple</item>
<item name="colorPrimary">@color/deep_purple_primary</item>
<item name="colorOnPrimary">@color/deep_purple_on_primary</item>
<item name="colorPrimaryInverse">@color/deep_purple_primary_inverse</item>
<item name="colorPrimaryContainer">@color/deep_purple_primary_container</item>
<item name="colorOnPrimaryContainer">@color/deep_purple_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.Indigo" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/indigo</item>
<item name="colorPrimary">@color/indigo_primary</item>
<item name="colorOnPrimary">@color/indigo_on_primary</item>
<item name="colorPrimaryInverse">@color/indigo_primary_inverse</item>
<item name="colorPrimaryContainer">@color/indigo_primary_container</item>
<item name="colorOnPrimaryContainer">@color/indigo_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.Blue" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/blue</item>
<item name="colorPrimary">@color/blue_primary</item>
<item name="colorOnPrimary">@color/blue_on_primary</item>
<item name="colorPrimaryInverse">@color/blue_primary_inverse</item>
<item name="colorPrimaryContainer">@color/blue_primary_container</item>
<item name="colorOnPrimaryContainer">@color/blue_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.LightBlue" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/light_blue</item>
<item name="colorPrimary">@color/light_blue_primary</item>
<item name="colorOnPrimary">@color/light_blue_on_primary</item>
<item name="colorPrimaryInverse">@color/light_blue_primary_inverse</item>
<item name="colorPrimaryContainer">@color/light_blue_primary_container</item>
<item name="colorOnPrimaryContainer">@color/light_blue_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.Cyan" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/cyan</item>
<item name="colorPrimary">@color/cyan_primary</item>
<item name="colorOnPrimary">@color/cyan_on_primary</item>
<item name="colorPrimaryInverse">@color/cyan_primary_inverse</item>
<item name="colorPrimaryContainer">@color/cyan_primary_container</item>
<item name="colorOnPrimaryContainer">@color/cyan_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.Teal" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/teal</item>
<item name="colorPrimary">@color/teal_primary</item>
<item name="colorOnPrimary">@color/teal_on_primary</item>
<item name="colorPrimaryInverse">@color/teal_primary_inverse</item>
<item name="colorPrimaryContainer">@color/teal_primary_container</item>
<item name="colorOnPrimaryContainer">@color/teal_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.Green" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/green</item>
<item name="colorPrimary">@color/green_primary</item>
<item name="colorOnPrimary">@color/green_on_primary</item>
<item name="colorPrimaryInverse">@color/green_primary_inverse</item>
<item name="colorPrimaryContainer">@color/green_primary_container</item>
<item name="colorOnPrimaryContainer">@color/green_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.LightGreen" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/light_green</item>
<item name="colorPrimary">@color/light_green_primary</item>
<item name="colorOnPrimary">@color/light_green_on_primary</item>
<item name="colorPrimaryInverse">@color/light_green_primary_inverse</item>
<item name="colorPrimaryContainer">@color/light_green_primary_container</item>
<item name="colorOnPrimaryContainer">@color/light_green_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.Lime" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/lime</item>
<item name="colorPrimary">@color/lime_primary</item>
<item name="colorOnPrimary">@color/lime_on_primary</item>
<item name="colorPrimaryInverse">@color/lime_primary_inverse</item>
<item name="colorPrimaryContainer">@color/lime_primary_container</item>
<item name="colorOnPrimaryContainer">@color/lime_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.Yellow" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/yellow</item>
<item name="colorPrimary">@color/yellow_primary</item>
<item name="colorOnPrimary">@color/yellow_on_primary</item>
<item name="colorPrimaryInverse">@color/yellow_primary_inverse</item>
<item name="colorPrimaryContainer">@color/yellow_primary_container</item>
<item name="colorOnPrimaryContainer">@color/yellow_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.Orange" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/orange</item>
<item name="colorPrimary">@color/orange_primary</item>
<item name="colorOnPrimary">@color/orange_on_primary</item>
<item name="colorPrimaryInverse">@color/orange_primary_inverse</item>
<item name="colorPrimaryContainer">@color/orange_primary_container</item>
<item name="colorOnPrimaryContainer">@color/orange_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.DeepOrange" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/deep_orange</item>
<item name="colorPrimary">@color/deep_orange_primary</item>
<item name="colorOnPrimary">@color/deep_orange_on_primary</item>
<item name="colorPrimaryInverse">@color/deep_orange_primary_inverse</item>
<item name="colorPrimaryContainer">@color/deep_orange_primary_container</item>
<item name="colorOnPrimaryContainer">@color/deep_orange_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.Brown" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/brown</item>
<item name="colorPrimary">@color/brown_primary</item>
<item name="colorOnPrimary">@color/brown_on_primary</item>
<item name="colorPrimaryInverse">@color/brown_primary_inverse</item>
<item name="colorPrimaryContainer">@color/brown_primary_container</item>
<item name="colorOnPrimaryContainer">@color/brown_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.Grey" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/grey</item>
<item name="colorPrimary">@color/grey_primary</item>
<item name="colorOnPrimary">@color/grey_on_primary</item>
<item name="colorPrimaryInverse">@color/grey_primary_inverse</item>
<item name="colorPrimaryContainer">@color/grey_primary_container</item>
<item name="colorOnPrimaryContainer">@color/grey_on_primary_container</item>
</style>
<style name="Theme.Auxio.Black.BlueGrey" parent="Theme.Auxio.App.Black">
<item name="colorAccent">@color/blue_grey</item>
<item name="colorPrimary">@color/blue_grey_primary</item>
<item name="colorOnPrimary">@color/blue_grey_on_primary</item>
<item name="colorPrimaryInverse">@color/blue_grey_primary_inverse</item>
<item name="colorPrimaryContainer">@color/blue_grey_primary_container</item>
<item name="colorOnPrimaryContainer">@color/blue_grey_on_primary_container</item>
</style>
</resources>

View file

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory
app:layout="@layout/item_header"
app:title="@string/set_display">
<SwitchPreferenceCompat
app:defaultValue="true"
app:iconSpaceReserved="false"
app:key="KEY_SHOW_COVERS"
app:summary="@string/set_show_covers_desc"
app:title="@string/set_show_covers" />
<SwitchPreferenceCompat
app:defaultValue="false"
app:dependency="KEY_SHOW_COVERS"
app:iconSpaceReserved="false"
app:key="KEY_QUALITY_COVERS"
app:summary="@string/set_quality_covers_desc"
app:title="@string/set_quality_covers" />
<SwitchPreferenceCompat
app:allowDividerBelow="false"
app:defaultValue="false"
app:iconSpaceReserved="false"
app:key="KEY_ALT_NOTIF_ACTION"
app:summaryOff="@string/set_alt_loop"
app:summaryOn="@string/set_alt_shuffle"
app:title="@string/set_alt_action" />
</PreferenceCategory>
<PreferenceCategory
app:layout="@layout/item_header"
app:title="@string/set_audio">
<SwitchPreferenceCompat
app:defaultValue="true"
app:iconSpaceReserved="false"
app:key="KEY_AUDIO_FOCUS"
app:summary="@string/set_focus_desc"
app:title="@string/set_focus" />
<SwitchPreferenceCompat
app:allowDividerBelow="false"
app:defaultValue="true"
app:iconSpaceReserved="false"
app:key="KEY_PLUG_MGT"
app:summary="@string/set_plug_mgt_desc"
app:title="@string/set_plug_mgt" />
</PreferenceCategory>
<PreferenceCategory
app:layout="@layout/item_header"
app:title="@string/set_behavior">
<org.oxycblt.auxio.settings.IntListPreference
app:defaultValue="@integer/play_mode_songs"
app:entries="@array/entries_song_playback_mode"
app:entryValues="@array/values_song_playback_mode"
app:iconSpaceReserved="false"
app:key="KEY_SONG_PLAY_MODE2"
app:title="@string/set_song_mode"
app:useSimpleSummaryProvider="true" />
<SwitchPreferenceCompat
app:defaultValue="true"
app:iconSpaceReserved="false"
app:key="KEY_KEEP_SHUFFLE"
app:summary="@string/set_keep_shuffle_desc"
app:title="@string/set_keep_shuffle" />
<SwitchPreferenceCompat
app:allowDividerBelow="false"
app:defaultValue="true"
app:iconSpaceReserved="false"
app:key="KEY_PREV_REWIND"
app:summary="@string/set_rewind_prev_desc"
app:title="@string/set_rewind_prev" />
<SwitchPreferenceCompat
app:allowDividerBelow="false"
app:defaultValue="false"
app:iconSpaceReserved="false"
app:key="KEY_LOOP_PAUSE"
app:summary="@string/set_loop_pause_desc"
app:title="@string/set_loop_pause" />
</PreferenceCategory>
<PreferenceCategory
app:layout="@layout/item_header"
app:title="@string/set_content">
<Preference
app:iconSpaceReserved="false"
app:key="KEY_SAVE_STATE"
app:summary="@string/set_save_desc"
app:title="@string/set_save" />
<Preference
app:iconSpaceReserved="false"
app:key="KEY_BLACKLIST"
app:summary="@string/set_excluded_desc"
app:title="@string/set_excluded" />
</PreferenceCategory>
</PreferenceScreen>

View file

@ -101,7 +101,7 @@
app:summary="@string/set_keep_shuffle_desc"
app:title="@string/set_keep_shuffle" />
<SwitchPreference
<SwitchPreferenceCompat
app:allowDividerBelow="false"
app:defaultValue="true"
app:iconSpaceReserved="false"
@ -109,7 +109,7 @@
app:summary="@string/set_rewind_prev_desc"
app:title="@string/set_rewind_prev" />
<SwitchPreference
<SwitchPreferenceCompat
app:allowDividerBelow="false"
app:defaultValue="false"
app:iconSpaceReserved="false"

View file

@ -1,6 +1,6 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.5.30'
ext.kotlin_version = "1.5.31"
ext.navigation_version = "2.3.5"
repositories {