diff --git a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt
index f5ea24daf..4f8c12e67 100644
--- a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt
+++ b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt
@@ -20,6 +20,7 @@ import org.oxycblt.auxio.ui.isEdgeOn
* The single [AppCompatActivity] for Auxio.
*/
class MainActivity : AppCompatActivity() {
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt
index 7175ab913..34d86020f 100644
--- a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt
@@ -26,6 +26,7 @@ import org.oxycblt.auxio.ui.toColor
/**
* The primary "Home" [Fragment] for Auxio.
+ * TODO: Make navigation stack instead of artificially rerouting to LibraryFragment
*/
class MainFragment : Fragment() {
private val playbackModel: PlaybackViewModel by activityViewModels()
@@ -91,18 +92,19 @@ class MainFragment : Fragment() {
}
detailModel.navToItem.observe(viewLifecycleOwner) {
- if (it != null) {
- // If the current destination isn't even LibraryFragment, then navigate there first
- if (binding.navBar.selectedItemId != R.id.library_fragment) {
+ if (it != null && navController != null) {
+ val curDest = navController.currentDestination?.id
+
+ val isOk = when (it) {
+ is Song -> (detailModel.currentAlbum.value?.id == it.album.id) magic (curDest != R.id.album_detail_fragment)
+ is Album -> (detailModel.currentAlbum.value?.id == it.id) magic (curDest != R.id.album_detail_fragment)
+ is Artist -> (detailModel.currentArtist.value?.id == it.id) magic (curDest != R.id.artist_detail_fragment)
+
+ else -> false
+ }
+
+ if (isOk) {
binding.navBar.selectedItemId = R.id.library_fragment
- } else {
- // If the user currently is in library, check if its valid to navigate to the
- // item in question.
- if ((it is Album || it is Song) && shouldGoToAlbum(navController!!)) {
- binding.navBar.selectedItemId = R.id.library_fragment
- } else if (it is Artist && shouldGoToArtist(navController!!)) {
- binding.navBar.selectedItemId = R.id.library_fragment
- }
}
}
}
@@ -115,29 +117,14 @@ class MainFragment : Fragment() {
}
/**
- * Whether its okay to navigate to the album detail fragment when the playing song/album needs to
- * be navigated to
+ * Magic boolean logic that gets navigation working.
+ * true true -> true |
+ * true false -> false |
+ * false true -> true |
+ * false false -> false |
*/
- private fun shouldGoToAlbum(controller: NavController): Boolean {
- return (
- controller.currentDestination!!.id == R.id.album_detail_fragment &&
- detailModel.currentAlbum.value?.id != playbackModel.song.value!!.album.id
- ) ||
- controller.currentDestination!!.id == R.id.artist_detail_fragment ||
- controller.currentDestination!!.id == R.id.genre_detail_fragment
- }
-
- /**
- * Whether its okay to go to the artist detail fragment when the current playing artist
- * is selected.
- */
- private fun shouldGoToArtist(controller: NavController): Boolean {
- return (
- controller.currentDestination!!.id == R.id.artist_detail_fragment &&
- detailModel.currentArtist.value?.id != playbackModel.song.value!!.album.artist.id
- ) ||
- controller.currentDestination!!.id == R.id.album_detail_fragment ||
- controller.currentDestination!!.id == R.id.genre_detail_fragment
+ private infix fun Boolean.magic(other: Boolean): Boolean {
+ return if (!this && !other) false else !(this && !other)
}
/**
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 34ce2a801..78f7ed98e 100644
--- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt
@@ -86,13 +86,11 @@ class AlbumDetailFragment : DetailFragment() {
detailModel.navToParent.observe(viewLifecycleOwner) {
if (it) {
- if (!args.fromArtist) {
- findNavController().navigate(
- AlbumDetailFragmentDirections.actionShowParentArtist(
- detailModel.currentAlbum.value!!.artist.id
- )
+ findNavController().navigate(
+ AlbumDetailFragmentDirections.actionShowParentArtist(
+ detailModel.currentAlbum.value!!.artist.id
)
- }
+ )
detailModel.doneWithNavToParent()
}
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 913e4e305..7e6a06583 100644
--- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt
@@ -48,7 +48,7 @@ class ArtistDetailFragment : DetailFragment() {
detailModel.updateNavigationStatus(true)
findNavController().navigate(
- ArtistDetailFragmentDirections.actionShowAlbum(it.id, true)
+ ArtistDetailFragmentDirections.actionShowAlbum(it.id)
)
}
},
diff --git a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt
index d9332e4db..4f97f3baf 100644
--- a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt
@@ -77,7 +77,7 @@ class GenreDetailFragment : DetailFragment() {
)
} else if (it is Album) {
findNavController().navigate(
- GenreDetailFragmentDirections.actionGoAlbum(it.id, false)
+ GenreDetailFragmentDirections.actionGoAlbum(it.id)
)
}
diff --git a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt
index 61a9dd550..20d4f5bc3 100644
--- a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt
@@ -120,7 +120,7 @@ class LibraryFragment : Fragment() {
when (baseModel) {
is Genre -> LibraryFragmentDirections.actionShowGenre(baseModel.id)
is Artist -> LibraryFragmentDirections.actionShowArtist(baseModel.id)
- is Album -> LibraryFragmentDirections.actionShowAlbum(baseModel.id, false)
+ is Album -> LibraryFragmentDirections.actionShowAlbum(baseModel.id)
// If given model wasn't valid, then reset the navigation status
// and abort the navigation.
diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt
index 5a69bcb1b..2598c11d4 100644
--- a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt
@@ -163,7 +163,7 @@ class SearchFragment : Fragment() {
when (baseModel) {
is Genre -> SearchFragmentDirections.actionShowGenre(baseModel.id)
is Artist -> SearchFragmentDirections.actionShowArtist(baseModel.id)
- is Album -> SearchFragmentDirections.actionShowAlbum(baseModel.id, false)
+ is Album -> SearchFragmentDirections.actionShowAlbum(baseModel.id)
// If given model wasn't valid, then reset the navigation status
// and abort the navigation.
diff --git a/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt b/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt
index 7aadd90ec..beb1e40c4 100644
--- a/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt
+++ b/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt
@@ -7,16 +7,12 @@ import android.content.res.Configuration
import android.content.res.Resources
import android.graphics.Point
import android.os.Build
-import android.text.SpannableString
import android.text.Spanned
-import android.text.style.ForegroundColorSpan
import android.util.DisplayMetrics
-import android.view.MenuItem
import android.view.WindowManager
import android.widget.ImageButton
import android.widget.TextView
import android.widget.Toast
-import androidx.annotation.ColorInt
import androidx.annotation.ColorRes
import androidx.annotation.PluralsRes
import androidx.appcompat.app.AppCompatActivity
diff --git a/app/src/main/res/navigation/nav_explore.xml b/app/src/main/res/navigation/nav_explore.xml
index 8d419bd1b..27e138a86 100644
--- a/app/src/main/res/navigation/nav_explore.xml
+++ b/app/src/main/res/navigation/nav_explore.xml
@@ -56,9 +56,6 @@
-