diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4e62f5a3c..e54d3349b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,15 +4,19 @@
#### What's New
- Folders on external drives can now be excluded on Android Q+ [#134]
-- Added toggle for edge-to-edge mode [#149]
+- Playback bar now has a skip action
#### What's Improved
- The toolbar in the home UI now collapses when scrolling
+- The toolbar layout is now consistent with Material Design 3
- Genre parsing now handles multiple integer values and cover/remix indicators (May wipe playback state)
+- Playback bar now picks the larger inset in case that gesture inset is missing [#149]
#### Dev/Meta
- New translations [Fjuro -> Czech]
- Moved music loading to a foreground service
+- Phased out `ImageButton` for `MaterialButton`
+- Unified icon sizing
## v2.3.1
diff --git a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt
index 76c76dd63..ddba5ec69 100644
--- a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt
+++ b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt
@@ -32,8 +32,6 @@ import org.oxycblt.auxio.music.IndexerService
import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.playback.system.PlaybackService
import org.oxycblt.auxio.settings.SettingsManager
-import org.oxycblt.auxio.ui.accent.Accent
-import org.oxycblt.auxio.util.getColorSafe
import org.oxycblt.auxio.util.getSystemBarInsetsCompat
import org.oxycblt.auxio.util.isNight
import org.oxycblt.auxio.util.logD
@@ -56,13 +54,11 @@ class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- val settingsManager = SettingsManager.getInstance()
-
- setupTheme(settingsManager.theme, settingsManager.accent, settingsManager.useBlackTheme)
+ setupTheme()
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
- setupEdgeToEdge(binding.root, settingsManager.edgeToEdge)
+ setupEdgeToEdge(binding.root)
logD("Activity created")
}
@@ -111,41 +107,30 @@ class MainActivity : AppCompatActivity() {
return null
}
- private fun setupTheme(theme: Int, accent: Accent, useBlackTheme: Boolean) {
+ private fun setupTheme() {
+ val settingsManager = SettingsManager.getInstance()
+
// Disable theme customization above Android 12, as it's far enough in as a version to
// the point where most phones should have an automatic option for light/dark theming.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
- AppCompatDelegate.setDefaultNightMode(theme)
+ AppCompatDelegate.setDefaultNightMode(settingsManager.theme)
} else {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
}
// The black theme has a completely separate set of styles since style attributes cannot
// be modified at runtime.
- if (isNight && useBlackTheme) {
- logD("Applying black theme [accent $accent]")
- setTheme(accent.blackTheme)
+ if (isNight && settingsManager.useBlackTheme) {
+ logD("Applying black theme [accent ${settingsManager.accent}]")
+ setTheme(settingsManager.accent.blackTheme)
} else {
- logD("Applying normal theme [accent $accent]")
- setTheme(accent.theme)
+ logD("Applying normal theme [accent ${settingsManager.accent}]")
+ setTheme(settingsManager.accent.theme)
}
}
- private fun setupEdgeToEdge(contentView: View, enabled: Boolean) {
- val fitsSystemWindows = !enabled
- WindowCompat.setDecorFitsSystemWindows(window, fitsSystemWindows)
- if (fitsSystemWindows) {
- // Auxio's theme is normally set up to anticipate edge to edge mode being
- // enabled. In the case that it is not, we have to update the values during
- // runtime.
- val controller = WindowCompat.getInsetsController(window, window.decorView)
- val black = getColorSafe(android.R.color.black)
-
- window.statusBarColor = black
- controller.isAppearanceLightStatusBars = false
- window.navigationBarColor = black
- controller.isAppearanceLightNavigationBars = false
- }
+ private fun setupEdgeToEdge(contentView: View) {
+ WindowCompat.setDecorFitsSystemWindows(window, false)
contentView.setOnApplyWindowInsetsListener { view, insets ->
val bars = insets.getSystemBarInsetsCompat(view)
diff --git a/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt b/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt
index cc295f0fe..9e9bb30c9 100644
--- a/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt
@@ -141,13 +141,6 @@ class SettingsListFragment : PreferenceFragmentCompat() {
true
}
}
- SettingsManager.KEY_EDGE_TO_EDGE -> {
- onPreferenceChangeListener =
- Preference.OnPreferenceChangeListener { _, _ ->
- requireActivity().recreate()
- true
- }
- }
SettingsManager.KEY_LIB_TABS -> {
onPreferenceClickListener =
Preference.OnPreferenceClickListener {
diff --git a/app/src/main/java/org/oxycblt/auxio/settings/SettingsManager.kt b/app/src/main/java/org/oxycblt/auxio/settings/SettingsManager.kt
index 266859c9d..16e506a02 100644
--- a/app/src/main/java/org/oxycblt/auxio/settings/SettingsManager.kt
+++ b/app/src/main/java/org/oxycblt/auxio/settings/SettingsManager.kt
@@ -62,10 +62,6 @@ class SettingsManager private constructor(context: Context) :
}
}
- /** Whether edge-to-edge is enabled. */
- val edgeToEdge: Boolean
- get() = inner.getBoolean(KEY_EDGE_TO_EDGE, true)
-
/**
* Whether to display the RepeatMode or the shuffle status on the notification. False if repeat,
* true if shuffle.
@@ -308,7 +304,6 @@ class SettingsManager private constructor(context: Context) :
const val KEY_THEME = "KEY_THEME2"
const val KEY_BLACK_THEME = "KEY_BLACK_THEME"
const val KEY_ACCENT = "auxio_accent2"
- const val KEY_EDGE_TO_EDGE = "auxio_edge"
const val KEY_LIB_TABS = "auxio_lib_tabs"
const val KEY_SHOW_COVERS = "KEY_SHOW_COVERS"
diff --git a/app/src/main/java/org/oxycblt/auxio/ui/StyledImageView.kt b/app/src/main/java/org/oxycblt/auxio/ui/StyledImageView.kt
index 4641838b9..792b6cc3f 100644
--- a/app/src/main/java/org/oxycblt/auxio/ui/StyledImageView.kt
+++ b/app/src/main/java/org/oxycblt/auxio/ui/StyledImageView.kt
@@ -50,7 +50,7 @@ import org.oxycblt.auxio.util.getDrawableSafe
* of the view size, and corner radius application depending on user preference.
* @author OxygenCobalt
*
- * TODO: Add an activation indicator to this view too
+ * TODO: Rework this layout into a total ViewGroup that enables more customization + an indicator
*/
class StyledImageView
@JvmOverloads
diff --git a/app/src/main/res/drawable/ic_indexer.xml b/app/src/main/res/drawable/ic_indexer.xml
index d223966f1..4a3d390d0 100644
--- a/app/src/main/res/drawable/ic_indexer.xml
+++ b/app/src/main/res/drawable/ic_indexer.xml
@@ -2,10 +2,10 @@
-
+ android:viewportHeight="24">
+
diff --git a/app/src/main/res/layout-land/fragment_playback_panel.xml b/app/src/main/res/layout-land/fragment_playback_panel.xml
index 4c135627f..cfa0156a0 100644
--- a/app/src/main/res/layout-land/fragment_playback_panel.xml
+++ b/app/src/main/res/layout-land/fragment_playback_panel.xml
@@ -88,23 +88,23 @@
@@ -125,25 +125,25 @@
@@ -114,25 +114,25 @@
diff --git a/app/src/main/res/layout/item_excluded_dir.xml b/app/src/main/res/layout/item_excluded_dir.xml
index da9c75d3d..844b39d0b 100644
--- a/app/src/main/res/layout/item_excluded_dir.xml
+++ b/app/src/main/res/layout/item_excluded_dir.xml
@@ -26,10 +26,10 @@