From ac3b3e79032d496018de7d8c9ab1d1b93b8fc0a4 Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Thu, 24 Sep 2020 06:59:53 -0600 Subject: [PATCH] Fix sorting modes Change the NUMERIC_DOWN sorting mode to actually sort by decending order, not ascending order. --- .../auxio/detail/AlbumDetailFragment.kt | 4 ++-- .../auxio/detail/ArtistDetailFragment.kt | 7 +++--- .../oxycblt/auxio/detail/DetailViewModel.kt | 3 +-- .../detail/adapters/DetailAlbumAdapter.kt | 6 ++--- .../detail/adapters/DetailSongAdapter.kt | 2 +- .../oxycblt/auxio/library/LibraryFragment.kt | 2 +- .../auxio/library/adapters/AlbumAdapter.kt | 2 +- .../auxio/library/adapters/ArtistAdapter.kt | 2 +- .../org/oxycblt/auxio/music/MusicUtils.kt | 1 - .../org/oxycblt/auxio/music/models/Artist.kt | 13 +++++----- .../{reycler => recycler}/RecyclerUtils.kt | 9 ++++--- .../org/oxycblt/auxio/songs/SongAdapter.kt | 2 +- .../org/oxycblt/auxio/songs/SongsFragment.kt | 2 +- app/src/main/res/drawable/header_dividers.xml | 6 ++--- .../main/res/drawable/ic_sort_alpha_down.xml | 24 +++++++++---------- .../main/res/drawable/ic_sort_alpha_up.xml | 24 +++++++++---------- .../res/drawable/ic_sort_numeric_down.xml | 24 +++++++++---------- .../main/res/drawable/ic_sort_numeric_up.xml | 24 +++++++++---------- .../res/layout/fragment_artist_detail.xml | 1 + 19 files changed, 77 insertions(+), 81 deletions(-) rename app/src/main/java/org/oxycblt/auxio/{reycler => recycler}/RecyclerUtils.kt (87%) 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 b5381066e..7e9f0cdc6 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt @@ -9,11 +9,11 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs -import org.oxycblt.auxio.reycler.ClickListener import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentAlbumDetailBinding import org.oxycblt.auxio.detail.adapters.DetailSongAdapter import org.oxycblt.auxio.music.MusicViewModel +import org.oxycblt.auxio.recycler.ClickListener import org.oxycblt.auxio.theme.applyDivider class AlbumDetailFragment : Fragment() { @@ -81,4 +81,4 @@ class AlbumDetailFragment : Fragment() { detailModel.currentAlbum = null } -} \ No newline at end of file +} 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 87a3a0447..f2c0c1706 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt @@ -9,14 +9,13 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs -import org.oxycblt.auxio.reycler.ClickListener import org.oxycblt.auxio.databinding.FragmentArtistDetailBinding import org.oxycblt.auxio.detail.adapters.DetailAlbumAdapter import org.oxycblt.auxio.music.MusicViewModel import org.oxycblt.auxio.music.models.Album -import org.oxycblt.auxio.reycler.SortMode +import org.oxycblt.auxio.recycler.ClickListener +import org.oxycblt.auxio.recycler.SortMode import org.oxycblt.auxio.theme.applyDivider -import java.util.Comparator class ArtistDetailFragment : Fragment() { @@ -99,4 +98,4 @@ class ArtistDetailFragment : Fragment() { ) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt b/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt index 4b0edf3c8..a0927f6ea 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt @@ -1,12 +1,11 @@ package org.oxycblt.auxio.detail -import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import org.oxycblt.auxio.music.models.Album import org.oxycblt.auxio.music.models.Artist -import org.oxycblt.auxio.reycler.SortMode +import org.oxycblt.auxio.recycler.SortMode class DetailViewModel : ViewModel() { var isAlreadyNavigating = false diff --git a/app/src/main/java/org/oxycblt/auxio/detail/adapters/DetailAlbumAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/adapters/DetailAlbumAdapter.kt index f195afcf4..d00eb7310 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/adapters/DetailAlbumAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/adapters/DetailAlbumAdapter.kt @@ -4,14 +4,14 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import org.oxycblt.auxio.reycler.ClickListener import org.oxycblt.auxio.databinding.ItemAlbumBinding import org.oxycblt.auxio.music.models.Album -import org.oxycblt.auxio.reycler.DiffCallback +import org.oxycblt.auxio.recycler.ClickListener +import org.oxycblt.auxio.recycler.DiffCallback class DetailAlbumAdapter( private val listener: ClickListener -) : ListAdapter(DiffCallback()){ +) : ListAdapter(DiffCallback()) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return ViewHolder( diff --git a/app/src/main/java/org/oxycblt/auxio/detail/adapters/DetailSongAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/adapters/DetailSongAdapter.kt index 83c51ca52..18345a7eb 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/adapters/DetailSongAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/adapters/DetailSongAdapter.kt @@ -3,9 +3,9 @@ package org.oxycblt.auxio.detail.adapters import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import org.oxycblt.auxio.reycler.ClickListener import org.oxycblt.auxio.databinding.ItemAlbumSongBinding import org.oxycblt.auxio.music.models.Song +import org.oxycblt.auxio.recycler.ClickListener class DetailSongAdapter( private val data: List, 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 acad70e26..58a4d43eb 100644 --- a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt @@ -8,12 +8,12 @@ import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController -import org.oxycblt.auxio.reycler.ClickListener import org.oxycblt.auxio.MainFragmentDirections import org.oxycblt.auxio.databinding.FragmentLibraryBinding import org.oxycblt.auxio.library.adapters.ArtistAdapter import org.oxycblt.auxio.music.MusicViewModel import org.oxycblt.auxio.music.models.Artist +import org.oxycblt.auxio.recycler.ClickListener import org.oxycblt.auxio.theme.applyDivider class LibraryFragment : Fragment() { diff --git a/app/src/main/java/org/oxycblt/auxio/library/adapters/AlbumAdapter.kt b/app/src/main/java/org/oxycblt/auxio/library/adapters/AlbumAdapter.kt index 0e0cf5026..ca7717fd3 100644 --- a/app/src/main/java/org/oxycblt/auxio/library/adapters/AlbumAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/library/adapters/AlbumAdapter.kt @@ -3,9 +3,9 @@ package org.oxycblt.auxio.library.adapters import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import org.oxycblt.auxio.reycler.ClickListener import org.oxycblt.auxio.databinding.ItemAlbumBinding import org.oxycblt.auxio.music.models.Album +import org.oxycblt.auxio.recycler.ClickListener class AlbumAdapter( private val data: List, diff --git a/app/src/main/java/org/oxycblt/auxio/library/adapters/ArtistAdapter.kt b/app/src/main/java/org/oxycblt/auxio/library/adapters/ArtistAdapter.kt index a71f6172d..2617227ae 100644 --- a/app/src/main/java/org/oxycblt/auxio/library/adapters/ArtistAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/library/adapters/ArtistAdapter.kt @@ -3,9 +3,9 @@ package org.oxycblt.auxio.library.adapters import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import org.oxycblt.auxio.reycler.ClickListener import org.oxycblt.auxio.databinding.ItemArtistBinding import org.oxycblt.auxio.music.models.Artist +import org.oxycblt.auxio.recycler.ClickListener class ArtistAdapter( private val data: List, diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicUtils.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicUtils.kt index 98fa419e4..cb59da50d 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicUtils.kt @@ -86,7 +86,6 @@ fun TextView.bindArtistCounts(artist: Artist) { text = context.getString(R.string.format_double_counts, albums, songs) } - // Get the artist genre. // TODO: Stub, add option to list all genres instead of just the most prominent @BindingAdapter("artistGenre") diff --git a/app/src/main/java/org/oxycblt/auxio/music/models/Artist.kt b/app/src/main/java/org/oxycblt/auxio/music/models/Artist.kt index 4009af869..2d2d7c097 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/models/Artist.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/models/Artist.kt @@ -10,13 +10,14 @@ data class Artist( var genre = "" val numAlbums: Int get() = albums.size - val numSongs: Int get() { - var num = 0 - albums.forEach { - num += it.numSongs + val numSongs: Int + get() { + var num = 0 + albums.forEach { + num += it.numSongs + } + return num } - return num - } fun finalizeGenre() { // If the artist has more than one genre, pick the most "Prominent" one. diff --git a/app/src/main/java/org/oxycblt/auxio/reycler/RecyclerUtils.kt b/app/src/main/java/org/oxycblt/auxio/recycler/RecyclerUtils.kt similarity index 87% rename from app/src/main/java/org/oxycblt/auxio/reycler/RecyclerUtils.kt rename to app/src/main/java/org/oxycblt/auxio/recycler/RecyclerUtils.kt index e3fc626c0..3def47cc5 100644 --- a/app/src/main/java/org/oxycblt/auxio/reycler/RecyclerUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/recycler/RecyclerUtils.kt @@ -1,9 +1,8 @@ -package org.oxycblt.auxio.reycler +package org.oxycblt.auxio.recycler import androidx.recyclerview.widget.DiffUtil import org.oxycblt.auxio.R import org.oxycblt.auxio.music.models.Album -import org.oxycblt.auxio.music.models.Artist // RecyclerView click listener class ClickListener(val onClick: (T) -> Unit) @@ -32,8 +31,8 @@ enum class SortMode(val iconRes: Int) { // Sort comparators are different for each music model, so they are // static maps instead. val albumSortComparators = mapOf>( - NUMERIC_DOWN to compareBy { it.year }, - NUMERIC_UP to compareByDescending { it.year }, + NUMERIC_DOWN to compareByDescending { it.year }, + NUMERIC_UP to compareBy { it.year }, // Alphabetic sorting needs to be case-insensitive ALPHA_DOWN to compareByDescending( @@ -44,4 +43,4 @@ enum class SortMode(val iconRes: Int) { ) { it.name }, ) } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/oxycblt/auxio/songs/SongAdapter.kt b/app/src/main/java/org/oxycblt/auxio/songs/SongAdapter.kt index 31f3214a6..1564a56c8 100644 --- a/app/src/main/java/org/oxycblt/auxio/songs/SongAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/songs/SongAdapter.kt @@ -3,9 +3,9 @@ package org.oxycblt.auxio.songs import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import org.oxycblt.auxio.reycler.ClickListener import org.oxycblt.auxio.databinding.ItemSongBinding import org.oxycblt.auxio.music.models.Song +import org.oxycblt.auxio.recycler.ClickListener class SongAdapter( private val data: List, diff --git a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt index 4cac2cbb1..3278e05a8 100644 --- a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt @@ -7,9 +7,9 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels -import org.oxycblt.auxio.reycler.ClickListener import org.oxycblt.auxio.databinding.FragmentSongsBinding import org.oxycblt.auxio.music.MusicViewModel +import org.oxycblt.auxio.recycler.ClickListener import org.oxycblt.auxio.theme.applyDivider class SongsFragment : Fragment() { diff --git a/app/src/main/res/drawable/header_dividers.xml b/app/src/main/res/drawable/header_dividers.xml index 3945c0df4..1add32398 100644 --- a/app/src/main/res/drawable/header_dividers.xml +++ b/app/src/main/res/drawable/header_dividers.xml @@ -1,5 +1,4 @@ - - @@ -17,7 +16,6 @@ https://stackoverflow.com/a/61157571/14143986 - + android:radius="@dimen/divider_ripple_size"> \ 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 bdf62d8c9..fcef744b6 100644 --- a/app/src/main/res/drawable/ic_sort_alpha_down.xml +++ b/app/src/main/res/drawable/ic_sort_alpha_down.xml @@ -4,16 +4,16 @@ android:viewportWidth="24" android:viewportHeight="24" android:tint="?android:attr/colorPrimary"> - - - + + + 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 fa124ad70..83a3d39b2 100644 --- a/app/src/main/res/drawable/ic_sort_alpha_up.xml +++ b/app/src/main/res/drawable/ic_sort_alpha_up.xml @@ -4,16 +4,16 @@ android:viewportWidth="24" android:viewportHeight="24" android:tint="?android:attr/colorPrimary"> - - - + + + 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 ecd376513..baff9ef5d 100644 --- a/app/src/main/res/drawable/ic_sort_numeric_down.xml +++ b/app/src/main/res/drawable/ic_sort_numeric_down.xml @@ -4,16 +4,16 @@ android:viewportWidth="24" android:viewportHeight="24" android:tint="?android:attr/colorPrimary"> - - - + + + 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 95a5d6fac..e312a2308 100644 --- a/app/src/main/res/drawable/ic_sort_numeric_up.xml +++ b/app/src/main/res/drawable/ic_sort_numeric_up.xml @@ -4,16 +4,16 @@ android:viewportWidth="24" android:viewportHeight="24" android:tint="?android:attr/colorPrimary"> - - - + + + diff --git a/app/src/main/res/layout/fragment_artist_detail.xml b/app/src/main/res/layout/fragment_artist_detail.xml index 924dbd4de..d692a1ed3 100644 --- a/app/src/main/res/layout/fragment_artist_detail.xml +++ b/app/src/main/res/layout/fragment_artist_detail.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools"> +