From 531825465f2fffef8e47c463b5abc23bf474ac3e Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Sat, 26 Sep 2020 09:58:14 -0600 Subject: [PATCH] Add back navigation to detail fragments Add backwards navigation to the DetailFragment toolbars. --- .../auxio/detail/AlbumDetailFragment.kt | 7 +++++-- .../auxio/detail/ArtistDetailFragment.kt | 6 +++++- .../org/oxycblt/auxio/music/MusicViewModel.kt | 2 -- .../auxio/music/processing/MusicLoader.kt | 2 +- .../org/oxycblt/auxio/theme/ThemeUtils.kt | 4 ++++ .../res/drawable/{ic_exit.xml => ic_back.xml} | 5 ++--- .../main/res/drawable/ic_sort_alpha_down.xml | 15 ++++++-------- .../main/res/drawable/ic_sort_alpha_up.xml | 17 +++++++--------- .../res/drawable/ic_sort_numeric_down.xml | 19 +++++++++--------- .../main/res/drawable/ic_sort_numeric_up.xml | 20 +++++++++---------- .../main/res/layout/fragment_album_detail.xml | 1 + .../res/layout/fragment_artist_detail.xml | 1 + 12 files changed, 51 insertions(+), 48 deletions(-) rename app/src/main/res/drawable/{ic_exit.xml => ic_back.xml} (53%) 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 b2088cbc5..f2b3fc0f9 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt @@ -55,6 +55,10 @@ class AlbumDetailFragment : Fragment() { binding.songRecycler.applyDivider() binding.songRecycler.setHasFixedSize(true) + binding.toolbar.setNavigationOnClickListener { + findNavController().navigateUp() + } + // If the album was shown directly from LibraryFragment [No parent artist stored], // then enable the ability to navigate upwards to the album's parent artist. if (detailModel.currentArtist == null) { @@ -75,7 +79,6 @@ class AlbumDetailFragment : Fragment() { binding.artistName.setBackgroundResource(R.drawable.ripple) } - // Set up sort modes detailModel.albumSortMode.observe(viewLifecycleOwner) { mode -> // Update the current sort icon binding.sortButton.setImageResource(mode.iconRes) @@ -93,7 +96,7 @@ class AlbumDetailFragment : Fragment() { ) } - // Dont enable the sort button if theres only one song [or less] + // Don't enable the sort button if there's only one song [or less] if (detailModel.currentAlbum!!.numSongs < 2) { binding.sortButton.imageTintList = ColorStateList.valueOf( R.color.inactive_color.toColor(requireContext()) 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 bb15c1f2d..802ecde13 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt @@ -55,6 +55,10 @@ class ArtistDetailFragment : Fragment() { binding.albumRecycler.applyDivider() binding.albumRecycler.setHasFixedSize(true) + binding.toolbar.setNavigationOnClickListener { + findNavController().navigateUp() + } + detailModel.artistSortMode.observe(viewLifecycleOwner) { mode -> // Update the current sort icon binding.sortButton.setImageResource(mode.iconRes) @@ -72,7 +76,7 @@ class ArtistDetailFragment : Fragment() { ) } - // Dont enable the sort button if there is only one album [Or less] + // Don't enable the sort button if there is only one album [Or less] if (detailModel.currentArtist!!.numAlbums < 2) { binding.sortButton.imageTintList = ColorStateList.valueOf( R.color.inactive_color.toColor(requireContext()) diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicViewModel.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicViewModel.kt index 0e915baae..c7d322d2e 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicViewModel.kt @@ -21,8 +21,6 @@ import org.oxycblt.auxio.music.processing.MusicLoaderResponse import org.oxycblt.auxio.music.processing.MusicSorter // ViewModel for music storage. May also be a god object. -// TODO: Move the lists from the music models to a map, would -// make some systems a lot less hacky and maybe decrease memory usage. class MusicViewModel(private val app: Application) : ViewModel() { // Coroutine diff --git a/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt b/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt index 34c2e8bf0..af421988f 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt @@ -118,7 +118,7 @@ class MusicLoader( Genres.Members.getContentUri("external", genre.id), arrayOf( Artists._ID, // 0 - Artists.ARTIST, // 1 + Artists.ARTIST // 1 ), null, null, Artists.DEFAULT_SORT_ORDER diff --git a/app/src/main/java/org/oxycblt/auxio/theme/ThemeUtils.kt b/app/src/main/java/org/oxycblt/auxio/theme/ThemeUtils.kt index 78d632b2f..674522478 100644 --- a/app/src/main/java/org/oxycblt/auxio/theme/ThemeUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/theme/ThemeUtils.kt @@ -2,6 +2,7 @@ package org.oxycblt.auxio.theme import android.content.Context import android.graphics.drawable.ColorDrawable +import androidx.annotation.ColorInt import androidx.core.content.ContextCompat import androidx.core.graphics.ColorUtils import androidx.recyclerview.widget.DividerItemDecoration @@ -34,6 +35,7 @@ private val ACCENTS = listOf( val accent = ACCENTS[5] // Get the transparent variant of a color int +@ColorInt fun getTransparentAccent(context: Context, color: Int, alpha: Int): Int { return ColorUtils.setAlphaComponent( ContextCompat.getColor(context, color), @@ -42,11 +44,13 @@ fun getTransparentAccent(context: Context, color: Int, alpha: Int): Int { } // Get the inactive transparency of an accent +@ColorInt fun getInactiveAlpha(color: Int): Int { return if (color == R.color.yellow) 100 else 150 } // Convert an integer to a color +@ColorInt fun Int.toColor(context: Context): Int { return try { ContextCompat.getColor(context, this) diff --git a/app/src/main/res/drawable/ic_exit.xml b/app/src/main/res/drawable/ic_back.xml similarity index 53% rename from app/src/main/res/drawable/ic_exit.xml rename to app/src/main/res/drawable/ic_back.xml index 558e773af..080fc1b88 100644 --- a/app/src/main/res/drawable/ic_exit.xml +++ b/app/src/main/res/drawable/ic_back.xml @@ -1,11 +1,10 @@ - + android:tint="?android:attr/colorControlNormal"> + android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_sort_alpha_down.xml b/app/src/main/res/drawable/ic_sort_alpha_down.xml index fcef744b6..335594fc2 100644 --- a/app/src/main/res/drawable/ic_sort_alpha_down.xml +++ b/app/src/main/res/drawable/ic_sort_alpha_down.xml @@ -5,15 +5,12 @@ android:viewportHeight="24" android:tint="?android:attr/colorPrimary"> + android:pathData="M3.694 17.992H0.976l4.142-12h3.27l4.136 12H9.806L6.8 8.734H6.706zm-0.17-4.717h6.422v1.98H3.524zm10.313 4.717v-1.506l5.988-8.402h-6V5.992h9.188v1.505L17.018 15.9h6.006v2.092z" + android:strokeWidth="0.4125" + android:fillColor="@android:color/white" /> + - + android:fillColor="@android:color/white" /> diff --git a/app/src/main/res/drawable/ic_sort_alpha_up.xml b/app/src/main/res/drawable/ic_sort_alpha_up.xml index 83a3d39b2..1cdbb3266 100644 --- a/app/src/main/res/drawable/ic_sort_alpha_up.xml +++ b/app/src/main/res/drawable/ic_sort_alpha_up.xml @@ -5,15 +5,12 @@ android:viewportHeight="24" android:tint="?android:attr/colorPrimary"> - - + android:fillColor="@android:color/white" /> + + diff --git a/app/src/main/res/drawable/ic_sort_numeric_down.xml b/app/src/main/res/drawable/ic_sort_numeric_down.xml index baff9ef5d..ed52e99f2 100644 --- a/app/src/main/res/drawable/ic_sort_numeric_down.xml +++ b/app/src/main/res/drawable/ic_sort_numeric_down.xml @@ -1,19 +1,18 @@ + + - - + android:fillColor="@android:color/white" /> diff --git a/app/src/main/res/drawable/ic_sort_numeric_up.xml b/app/src/main/res/drawable/ic_sort_numeric_up.xml index e312a2308..61e6dab83 100644 --- a/app/src/main/res/drawable/ic_sort_numeric_up.xml +++ b/app/src/main/res/drawable/ic_sort_numeric_up.xml @@ -1,19 +1,19 @@ + + + - - + android:fillColor="@android:color/white" /> diff --git a/app/src/main/res/layout/fragment_album_detail.xml b/app/src/main/res/layout/fragment_album_detail.xml index d57837a7e..d53fe5a4f 100644 --- a/app/src/main/res/layout/fragment_album_detail.xml +++ b/app/src/main/res/layout/fragment_album_detail.xml @@ -26,6 +26,7 @@ android:background="?android:attr/windowBackground" android:elevation="@dimen/elevation_normal" app:titleTextAppearance="@style/TextAppearance.Toolbar.Bold" + app:navigationIcon="@drawable/ic_back" app:title="@string/title_library_fragment" />