diff --git a/app/build.gradle b/app/build.gradle
index a86e6d3ab..61ea11c7f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -14,9 +14,9 @@ android {
versionName "2.5.0"
versionCode 19
+ minSdk 21
// API 33 is still busted, waiting until the XML element issue is fixed
// noinspection OldTargetApi
- minSdk 21
targetSdk 32
buildFeatures {
diff --git a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt
index d6f72ae03..3f5caac1c 100644
--- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt
@@ -86,7 +86,7 @@ class AlbumDetailFragment :
setOnMenuItemClickListener(this@AlbumDetailFragment)
}
- requireBinding().detailRecycler.apply {
+ binding.detailRecycler.apply {
adapter = detailAdapter
applySpans { pos ->
val item = detailAdapter.data.currentList[pos]
diff --git a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt
index 2b99446a5..b964c92ff 100644
--- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt
@@ -81,7 +81,7 @@ class ArtistDetailFragment :
setOnMenuItemClickListener(this@ArtistDetailFragment)
}
- requireBinding().detailRecycler.apply {
+ binding.detailRecycler.apply {
adapter = detailAdapter
applySpans { pos ->
// If the item is an ActionHeader we need to also make the item full-width
diff --git a/app/src/main/java/org/oxycblt/auxio/detail/DetailAppBarLayout.kt b/app/src/main/java/org/oxycblt/auxio/detail/DetailAppBarLayout.kt
index 988e857b7..d208a4df0 100644
--- a/app/src/main/java/org/oxycblt/auxio/detail/DetailAppBarLayout.kt
+++ b/app/src/main/java/org/oxycblt/auxio/detail/DetailAppBarLayout.kt
@@ -32,13 +32,13 @@ import com.google.android.material.appbar.AppBarLayout
import java.lang.Exception
import java.lang.reflect.Field
import org.oxycblt.auxio.R
-import org.oxycblt.auxio.ui.coordinator.EdgeAppBarLayout
+import org.oxycblt.auxio.ui.AuxioAppBarLayout
import org.oxycblt.auxio.util.lazyReflectedField
import org.oxycblt.auxio.util.logE
import org.oxycblt.auxio.util.logTraceOrThrow
/**
- * An [EdgeAppBarLayout] variant that also shows the name of the toolbar whenever the detail
+ * An [AuxioAppBarLayout] variant that also shows the name of the toolbar whenever the detail
* recyclerview is scrolled beyond it's first item (a.k.a the header). This is used instead of
* CollapsingToolbarLayout since that thing is a mess with crippling bugs and state issues. This
* just works.
@@ -47,7 +47,7 @@ import org.oxycblt.auxio.util.logTraceOrThrow
class DetailAppBarLayout
@JvmOverloads
constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr: Int = 0) :
- EdgeAppBarLayout(context, attrs, defStyleAttr) {
+ AuxioAppBarLayout(context, attrs, defStyleAttr) {
private var titleView: AppCompatTextView? = null
private var recycler: RecyclerView? = null
diff --git a/app/src/main/java/org/oxycblt/auxio/music/StorageFramework.kt b/app/src/main/java/org/oxycblt/auxio/music/StorageFramework.kt
index 13576aa97..b24b347eb 100644
--- a/app/src/main/java/org/oxycblt/auxio/music/StorageFramework.kt
+++ b/app/src/main/java/org/oxycblt/auxio/music/StorageFramework.kt
@@ -147,9 +147,7 @@ val StorageVolume.isInternalCompat: Boolean
val StorageVolume.uuidCompat: String?
@SuppressLint("NewApi") get() = uuid
-/*
- * Returns the state of the volume in a compatible manner.
- */
+/** Returns the state of the volume in a compatible manner. */
val StorageVolume.stateCompat: String
@SuppressLint("NewApi") get() = state
diff --git a/app/src/main/java/org/oxycblt/auxio/ui/coordinator/EdgeAppBarLayout.kt b/app/src/main/java/org/oxycblt/auxio/ui/AuxioAppBarLayout.kt
similarity index 88%
rename from app/src/main/java/org/oxycblt/auxio/ui/coordinator/EdgeAppBarLayout.kt
rename to app/src/main/java/org/oxycblt/auxio/ui/AuxioAppBarLayout.kt
index acaa17230..4494ec98c 100644
--- a/app/src/main/java/org/oxycblt/auxio/ui/coordinator/EdgeAppBarLayout.kt
+++ b/app/src/main/java/org/oxycblt/auxio/ui/AuxioAppBarLayout.kt
@@ -15,20 +15,17 @@
* along with this program. If not, see .
*/
-package org.oxycblt.auxio.ui.coordinator
+package org.oxycblt.auxio.ui
import android.content.Context
import android.util.AttributeSet
import android.view.View
import android.view.ViewGroup
import android.view.ViewTreeObserver
-import android.view.WindowInsets
import androidx.annotation.AttrRes
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.content.res.ResourcesCompat
-import androidx.core.view.updatePadding
import com.google.android.material.appbar.AppBarLayout
-import org.oxycblt.auxio.util.systemBarInsetsCompat
/**
* An [AppBarLayout] that fixes a bug with the default implementation where the lifted state will
@@ -37,7 +34,7 @@ import org.oxycblt.auxio.util.systemBarInsetsCompat
* **Note:** This layout relies on [AppBarLayout.liftOnScrollTargetViewId] to figure out what
* scrolling view to use. Failure to specify this will result in the layout not working.
*/
-open class EdgeAppBarLayout
+open class AuxioAppBarLayout
@JvmOverloads
constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr: Int = 0) :
AppBarLayout(context, attrs, defStyleAttr) {
@@ -58,15 +55,10 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr
}
init {
+ fitsSystemWindows = true
viewTreeObserver.addOnPreDrawListener(onPreDraw)
}
- override fun onApplyWindowInsets(insets: WindowInsets): WindowInsets {
- super.onApplyWindowInsets(insets)
- updatePadding(top = insets.systemBarInsetsCompat.top)
- return insets
- }
-
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
viewTreeObserver.removeOnPreDrawListener(onPreDraw)
diff --git a/app/src/main/java/org/oxycblt/auxio/ui/coordinator/EdgeCoordinatorLayout.kt b/app/src/main/java/org/oxycblt/auxio/ui/coordinator/EdgeCoordinatorLayout.kt
deleted file mode 100644
index 7fe6d4b63..000000000
--- a/app/src/main/java/org/oxycblt/auxio/ui/coordinator/EdgeCoordinatorLayout.kt
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2021 Auxio Project
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package org.oxycblt.auxio.ui.coordinator
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.WindowInsets
-import androidx.annotation.AttrRes
-import androidx.coordinatorlayout.widget.CoordinatorLayout
-import androidx.core.view.children
-
-/**
- * Class that manually overrides the busted window inset functionality of CoordinatorLayout in favor
- * of a simple "delegate to child views" implementation.
- *
- * @author OxygenCobalt
- */
-class EdgeCoordinatorLayout
-@JvmOverloads
-constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr: Int = 0) :
- CoordinatorLayout(context, attrs, defStyleAttr) {
- override fun dispatchApplyWindowInsets(insets: WindowInsets): WindowInsets {
- super.dispatchApplyWindowInsets(insets)
-
- for (child in children) {
- child.dispatchApplyWindowInsets(insets)
- }
-
- return insets
- }
-
- override fun onApplyWindowInsets(insets: WindowInsets): WindowInsets {
- super.onApplyWindowInsets(insets)
-
- for (child in children) {
- child.onApplyWindowInsets(insets)
- }
-
- return insets
- }
-}
diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml
index 39be7bcd3..ebb893ee5 100644
--- a/app/src/main/res/layout/fragment_about.xml
+++ b/app/src/main/res/layout/fragment_about.xml
@@ -1,5 +1,5 @@
-
-
@@ -20,7 +20,7 @@
app:navigationIcon="@drawable/ic_back_24"
app:title="@string/lbl_about" />
-
+
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_detail.xml b/app/src/main/res/layout/fragment_detail.xml
index 657488c00..32e5f023b 100644
--- a/app/src/main/res/layout/fragment_detail.xml
+++ b/app/src/main/res/layout/fragment_detail.xml
@@ -1,36 +1,31 @@
-
-
+
-
-
-
-
-
-
-
+ android:layout_height="wrap_content"
+ app:navigationIcon="@drawable/ic_back_24" />
-
-
\ No newline at end of file
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index b687b876d..29ca7f05b 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -1,5 +1,5 @@
-
-
+ android:fitsSystemWindows="true">
-
+
-
+
diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml
index 73f5adf98..71e862468 100644
--- a/app/src/main/res/layout/fragment_main.xml
+++ b/app/src/main/res/layout/fragment_main.xml
@@ -1,5 +1,5 @@
-
-
-
+
-
+
diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml
index 60c9dd43e..4d994b52f 100644
--- a/app/src/main/res/layout/fragment_search.xml
+++ b/app/src/main/res/layout/fragment_search.xml
@@ -1,12 +1,12 @@
-
-
@@ -43,7 +43,7 @@
-
+
-
+
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index dc9f84e6e..ad63ac67f 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -1,13 +1,12 @@
-
-
-
-
+
-
+