diff --git a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt index d0011a85a..9b55e1825 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt @@ -28,6 +28,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatDelegate import androidx.core.view.updatePadding import androidx.databinding.DataBindingUtil +import androidx.viewbinding.ViewBinding import org.oxycblt.auxio.accent.Accent import org.oxycblt.auxio.databinding.ActivityMainBinding import org.oxycblt.auxio.playback.PlaybackViewModel @@ -114,7 +115,7 @@ class MainActivity : AppCompatActivity() { } } - private fun applyEdgeToEdgeWindow(binding: ActivityMainBinding) { + private fun applyEdgeToEdgeWindow(binding: ViewBinding) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { // Do modern edge to edge, which happens to be around twice the size of the // old way of doing things. Thanks android, very cool! @@ -147,7 +148,7 @@ class MainActivity : AppCompatActivity() { } } - private fun WindowInsets.applyLeftRightInsets(binding: ActivityMainBinding): WindowInsets { + private fun WindowInsets.applyLeftRightInsets(binding: ViewBinding): WindowInsets { val bars = systemBarsCompat binding.root.updatePadding( diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt index 23f5d46c9..a95b83fc7 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt @@ -19,6 +19,7 @@ package org.oxycblt.auxio import android.Manifest +import android.os.Build import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -73,6 +74,22 @@ class MainFragment : Fragment() { } ) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + // Auxio's layout completely breaks down when it's window is resized too small, + // but for some insane reason google decided to cripple the window APIs one could use + // to limit it's size. So, we just have our own special layout that is shown whenever + // the screen is too small because nothing works the way it should and everything + // is broken. + + if (requireActivity().isInMultiWindowMode) { + val config = resources.configuration + + if (config.screenHeightDp < 250 || config.screenWidthDp < 250) { + binding.layoutTooSmall.visibility = View.VISIBLE + } + } + } + // --- VIEWMODEL SETUP --- // We have to control the bar view from here since using a Fragment in PlaybackLayout diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackLayout.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackLayout.kt index fa53f73c2..7c45d96ce 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackLayout.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackLayout.kt @@ -164,9 +164,15 @@ class PlaybackLayout @JvmOverloads constructor( // Make sure we add our fragment to this view. This is actually a replace operation // since we don't want to stack fragments but we can't ensure that this view doesn't // already have a fragment attached. - (context as AppCompatActivity).supportFragmentManager.beginTransaction() - .replace(R.id.playback_panel, playbackFragment) - .commit() + try { + (context as AppCompatActivity).supportFragmentManager.beginTransaction() + .replace(R.id.playback_panel, playbackFragment) + .commit() + } catch (e: Exception) { + // Band-aid to stop the app crashing if we have to swap out the content view + // without warning (which we have to do sometimes because android is the worst + // thing ever + } } } diff --git a/app/src/main/res/layout-land/fragment_playback.xml b/app/src/main/res/layout-land/fragment_playback.xml index 726ecc03f..687c4334a 100644 --- a/app/src/main/res/layout-land/fragment_playback.xml +++ b/app/src/main/res/layout-land/fragment_playback.xml @@ -36,8 +36,9 @@ - - + + + + + + + android:background="?attr/colorSurface" + android:visibility="gone"> + + + + + + + - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 69f56711c..2769dc4f3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -107,6 +107,7 @@ Auxio needs permission to read your music library No app can open this link This directory is not supported + Auxio does not support this screen size Search your library…