diff --git a/app/src/main/java/org/oxycblt/auxio/detail/recycler/DetailAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/recycler/DetailAdapter.kt index d8f79ac22..19ee4da86 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/recycler/DetailAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/recycler/DetailAdapter.kt @@ -28,8 +28,8 @@ import org.oxycblt.auxio.detail.SortHeader import org.oxycblt.auxio.list.Header import org.oxycblt.auxio.list.Item import org.oxycblt.auxio.list.SelectableListListener -import org.oxycblt.auxio.list.recycler.BasicInstructions import org.oxycblt.auxio.list.recycler.* +import org.oxycblt.auxio.list.recycler.BasicInstructions import org.oxycblt.auxio.music.Music import org.oxycblt.auxio.util.context import org.oxycblt.auxio.util.inflater diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt index a17bdd701..e6d0237dc 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt @@ -199,9 +199,7 @@ class HomeViewModel(application: Application) : songsListInstructions = null } - /** - * Signal that the specified [BasicInstructions] in [albumsListInstructions] were performed. - */ + /** Signal that the specified [BasicInstructions] in [albumsListInstructions] were performed. */ fun finishAlbumsListInstructions() { albumsListInstructions = null } @@ -213,9 +211,7 @@ class HomeViewModel(application: Application) : artistsListInstructions = null } - /** - * Signal that the specified [BasicInstructions] in [genresListInstructions] were performed. - */ + /** Signal that the specified [BasicInstructions] in [genresListInstructions] were performed. */ fun finishGenresListInstructions() { genresListInstructions = null } diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt index 2a8fda9b5..cd030d36a 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt @@ -31,9 +31,9 @@ import org.oxycblt.auxio.home.fastscroll.FastScrollRecyclerView import org.oxycblt.auxio.list.* import org.oxycblt.auxio.list.ListFragment import org.oxycblt.auxio.list.recycler.AlbumViewHolder +import org.oxycblt.auxio.list.recycler.BasicInstructions import org.oxycblt.auxio.list.recycler.ListDiffer import org.oxycblt.auxio.list.recycler.SelectionIndicatorAdapter -import org.oxycblt.auxio.list.recycler.BasicInstructions import org.oxycblt.auxio.music.* import org.oxycblt.auxio.music.library.Sort import org.oxycblt.auxio.playback.formatDurationMs diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt index 761b75f75..02592d916 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt @@ -29,9 +29,9 @@ import org.oxycblt.auxio.home.fastscroll.FastScrollRecyclerView import org.oxycblt.auxio.list.* import org.oxycblt.auxio.list.ListFragment import org.oxycblt.auxio.list.recycler.ArtistViewHolder +import org.oxycblt.auxio.list.recycler.BasicInstructions import org.oxycblt.auxio.list.recycler.ListDiffer import org.oxycblt.auxio.list.recycler.SelectionIndicatorAdapter -import org.oxycblt.auxio.list.recycler.BasicInstructions import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Music import org.oxycblt.auxio.music.MusicMode diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt index 447517281..a74df76fa 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt @@ -28,10 +28,10 @@ import org.oxycblt.auxio.home.HomeViewModel import org.oxycblt.auxio.home.fastscroll.FastScrollRecyclerView import org.oxycblt.auxio.list.* import org.oxycblt.auxio.list.ListFragment +import org.oxycblt.auxio.list.recycler.BasicInstructions import org.oxycblt.auxio.list.recycler.GenreViewHolder import org.oxycblt.auxio.list.recycler.ListDiffer import org.oxycblt.auxio.list.recycler.SelectionIndicatorAdapter -import org.oxycblt.auxio.list.recycler.BasicInstructions import org.oxycblt.auxio.music.Genre import org.oxycblt.auxio.music.Music import org.oxycblt.auxio.music.MusicMode @@ -109,8 +109,7 @@ class GenreListFragment : } private fun updateList(artists: List) { - genreAdapter.submitList( - artists, homeModel.genresListInstructions ?: BasicInstructions.DIFF) + genreAdapter.submitList(artists, homeModel.genresListInstructions ?: BasicInstructions.DIFF) homeModel.finishGenresListInstructions() } diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt index d4d731de8..b21b72ec7 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt @@ -30,10 +30,10 @@ import org.oxycblt.auxio.home.HomeViewModel import org.oxycblt.auxio.home.fastscroll.FastScrollRecyclerView import org.oxycblt.auxio.list.* import org.oxycblt.auxio.list.ListFragment +import org.oxycblt.auxio.list.recycler.BasicInstructions import org.oxycblt.auxio.list.recycler.ListDiffer import org.oxycblt.auxio.list.recycler.SelectionIndicatorAdapter import org.oxycblt.auxio.list.recycler.SongViewHolder -import org.oxycblt.auxio.list.recycler.BasicInstructions import org.oxycblt.auxio.music.Music import org.oxycblt.auxio.music.MusicMode import org.oxycblt.auxio.music.MusicParent diff --git a/app/src/main/java/org/oxycblt/auxio/list/Data.kt b/app/src/main/java/org/oxycblt/auxio/list/Data.kt index 878a6a9d3..b324fdc09 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/Data.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/Data.kt @@ -25,5 +25,6 @@ interface Item /** * A "header" used for delimiting groups of data. * @param titleRes The string resource used for the header's title. + * @param withDivider Whether to show a divider on the item. */ -data class Header(@StringRes val titleRes: Int) : Item +data class Header(@StringRes val titleRes: Int, val withDivider: Boolean = true) : Item diff --git a/app/src/main/java/org/oxycblt/auxio/list/recycler/ListDiffer.kt b/app/src/main/java/org/oxycblt/auxio/list/recycler/ListDiffer.kt index f42703a2b..ab6e3517f 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/recycler/ListDiffer.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/recycler/ListDiffer.kt @@ -99,11 +99,7 @@ enum class BasicInstructions { } private abstract class RealListDiffer() : ListDiffer { - override fun submitList( - newList: List, - instructions: BasicInstructions, - onDone: () -> Unit - ) { + override fun submitList(newList: List, instructions: BasicInstructions, onDone: () -> Unit) { when (instructions) { BasicInstructions.DIFF -> diffList(newList, onDone) BasicInstructions.REPLACE -> replaceList(newList, onDone) diff --git a/app/src/main/java/org/oxycblt/auxio/list/recycler/ViewHolders.kt b/app/src/main/java/org/oxycblt/auxio/list/recycler/ViewHolders.kt index 75e570cf8..9c559184f 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/recycler/ViewHolders.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/recycler/ViewHolders.kt @@ -18,6 +18,7 @@ package org.oxycblt.auxio.list.recycler import android.view.View +import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import org.oxycblt.auxio.IntegerTable import org.oxycblt.auxio.R @@ -249,6 +250,7 @@ class HeaderViewHolder private constructor(private val binding: ItemHeaderBindin */ fun bind(header: Header) { binding.title.text = binding.context.getString(header.titleRes) + binding.headerDivider.isVisible = header.withDivider } companion object { diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt index 9341a7390..1f52bdae9 100644 --- a/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt @@ -110,21 +110,21 @@ class SearchViewModel(application: Application) : if (filterMode == null || filterMode == MusicMode.ARTISTS) { library.artists.searchListImpl(query)?.let { - results.add(Header(R.string.lbl_artists)) + results.add(Header(R.string.lbl_artists, withDivider = results.isNotEmpty())) results.addAll(sort.artists(it)) } } if (filterMode == null || filterMode == MusicMode.ALBUMS) { library.albums.searchListImpl(query)?.let { - results.add(Header(R.string.lbl_albums)) + results.add(Header(R.string.lbl_albums, withDivider = results.isNotEmpty())) results.addAll(sort.albums(it)) } } if (filterMode == null || filterMode == MusicMode.GENRES) { library.genres.searchListImpl(query)?.let { - results.add(Header(R.string.lbl_genres)) + results.add(Header(R.string.lbl_genres, withDivider = results.isNotEmpty())) results.addAll(sort.genres(it)) } } @@ -133,7 +133,7 @@ class SearchViewModel(application: Application) : library.songs .searchListImpl(query) { q, song -> song.path.name.contains(q) } ?.let { - results.add(Header(R.string.lbl_songs)) + results.add(Header(R.string.lbl_songs, withDivider = results.isNotEmpty())) results.addAll(sort.songs(it)) } } diff --git a/app/src/main/res/layout/item_bare_header.xml b/app/src/main/res/layout/item_bare_header.xml new file mode 100644 index 000000000..17d9d433a --- /dev/null +++ b/app/src/main/res/layout/item_bare_header.xml @@ -0,0 +1,9 @@ + + diff --git a/app/src/main/res/layout/item_disc_header.xml b/app/src/main/res/layout/item_disc_header.xml index 6d45c43d7..4aa39b3ef 100644 --- a/app/src/main/res/layout/item_disc_header.xml +++ b/app/src/main/res/layout/item_disc_header.xml @@ -22,7 +22,11 @@ + + - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_sort_header.xml b/app/src/main/res/layout/item_sort_header.xml index 3497e4770..f98c5488e 100644 --- a/app/src/main/res/layout/item_sort_header.xml +++ b/app/src/main/res/layout/item_sort_header.xml @@ -6,16 +6,21 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> + +