diff --git a/app/src/main/java/org/oxycblt/auxio/home/AdaptiveFloatingActionButton.kt b/app/src/main/java/org/oxycblt/auxio/home/AdaptiveFloatingActionButton.kt
deleted file mode 100644
index f6b405332..000000000
--- a/app/src/main/java/org/oxycblt/auxio/home/AdaptiveFloatingActionButton.kt
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.oxycblt.auxio.home
-
-import android.content.Context
-import android.util.AttributeSet
-import com.google.android.material.floatingactionbutton.FloatingActionButton
-import org.oxycblt.auxio.util.getDimenSizeSafe
-import org.oxycblt.auxio.util.logD
-import com.google.android.material.R as MaterialR
-
-/**
- * A FloatingActionButton that automatically switches to a normal or large FAB depending on the
- * screen size.
- */
-@Suppress("PrivateResource")
-class AdaptiveFloatingActionButton @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = MaterialR.style.Widget_Material3_FloatingActionButton_Primary
-) : FloatingActionButton(context, attrs, defStyleAttr) {
-
- init {
- size = SIZE_NORMAL
-
- // Use a large FAB on large screens, as it makes it easier to touch.
- if (resources.configuration.smallestScreenWidthDp >= 640) {
- logD("Using large FAB configuration")
-
- val largeFabSize = context.getDimenSizeSafe(
- MaterialR.dimen.m3_large_fab_size
- )
-
- val largeImageSize = context.getDimenSizeSafe(
- MaterialR.dimen.m3_large_fab_max_image_size
- )
-
- customSize = largeFabSize
- setMaxImageSize(largeImageSize)
- }
- }
-}
diff --git a/app/src/main/java/org/oxycblt/auxio/home/FloatingActionButtonContainer.kt b/app/src/main/java/org/oxycblt/auxio/home/EdgeFabContainer.kt
similarity index 96%
rename from app/src/main/java/org/oxycblt/auxio/home/FloatingActionButtonContainer.kt
rename to app/src/main/java/org/oxycblt/auxio/home/EdgeFabContainer.kt
index 9f38464dd..8828c62f6 100644
--- a/app/src/main/java/org/oxycblt/auxio/home/FloatingActionButtonContainer.kt
+++ b/app/src/main/java/org/oxycblt/auxio/home/EdgeFabContainer.kt
@@ -30,7 +30,7 @@ import org.oxycblt.auxio.util.systemBarInsetsCompat
* A container for a FloatingActionButton that enables edge-to-edge support.
* @author OxygenCobalt
*/
-class FloatingActionButtonContainer @JvmOverloads constructor(
+class EdgeFabContainer @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
@AttrRes defStyleAttr: Int = 0
@@ -45,7 +45,6 @@ class FloatingActionButtonContainer @JvmOverloads constructor(
override fun onApplyWindowInsets(insets: WindowInsets): WindowInsets {
updatePadding(bottom = insets.systemBarInsetsCompat.bottom)
-
return insets
}
}
diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt
index b5b447ad4..f5fe3f216 100644
--- a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt
@@ -159,11 +159,9 @@ class HomeFragment : Fragment() {
).attach()
}
- binding.homeFab.setOnClickListener {
- playbackModel.shuffleAll()
- }
+ binding.homeShuffleFab.setup(playbackModel)
- // --- VIEWMODEL SETUP ---
+// --- VIEWMODEL SETUP ---
// There is no way a fast scrolling event can continue across a re-create. Reset it.
homeModel.updateFastScrolling(false)
@@ -171,12 +169,12 @@ class HomeFragment : Fragment() {
musicModel.loaderResponse.observe(viewLifecycleOwner) { response ->
// Handle the loader response.
when (response) {
- is MusicStore.Response.Ok -> binding.homeFab.show()
+ is MusicStore.Response.Ok -> binding.homeShuffleFab.show()
// While loading or during an error, make sure we keep the shuffle fab hidden so
// that any kind of playback is impossible. PlaybackStateManager also relies on this
// invariant, so please don't change it.
- else -> binding.homeFab.hide()
+ else -> binding.homeShuffleFab.hide()
}
}
@@ -188,9 +186,9 @@ class HomeFragment : Fragment() {
}
if (scrolling) {
- binding.homeFab.hide()
+ binding.homeShuffleFab.hide()
} else {
- binding.homeFab.show()
+ binding.homeShuffleFab.show()
}
}
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index 4bb06bb87..2bab4386f 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -40,24 +40,23 @@
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
tools:layout="@layout/fragment_home_list" />
-
-
+ android:src="@drawable/ic_shuffle" />
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_shuffle_button.xml b/app/src/main/res/layout/view_shuffle_button.xml
new file mode 100644
index 000000000..2065d961c
--- /dev/null
+++ b/app/src/main/res/layout/view_shuffle_button.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-sw640dp/styles_ui.xml b/app/src/main/res/values-sw640dp/styles_ui.xml
new file mode 100644
index 000000000..f72e10d34
--- /dev/null
+++ b/app/src/main/res/values-sw640dp/styles_ui.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/styles_ui.xml b/app/src/main/res/values/styles_ui.xml
index 95c53941b..ae84084c5 100644
--- a/app/src/main/res/values/styles_ui.xml
+++ b/app/src/main/res/values/styles_ui.xml
@@ -167,9 +167,14 @@
compensate.
2. For some reason elevation behaves strangely in the playback panel, so we disable it.
-->
- - @dimen/size_playback_icon
+ - normal
- @dimen/size_btn_large
+ - @dimen/size_playback_icon
- 0dp
- 0dp
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 7436375ca..773a522aa 100644
--- a/build.gradle
+++ b/build.gradle
@@ -9,7 +9,7 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.1.1'
+ classpath 'com.android.tools.build:gradle:7.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navigation_version"