Sort artists and global albums by name/title. Sort an artist's albums by release date. Display the release year in the albums view (#54).
This commit is contained in:
parent
b0d7ff393d
commit
37f4b1da9e
|
@ -41,12 +41,21 @@ class AlbumsAdapter(val context: Context?, private val listener: OnAlbumClickLis
|
||||||
|
|
||||||
holder.title.text = album.title
|
holder.title.text = album.title
|
||||||
holder.artist.text = album.artist.name
|
holder.artist.text = album.artist.name
|
||||||
|
holder.release_date.visibility = View.GONE
|
||||||
|
|
||||||
|
album.release_date.split('-').getOrNull(0)?.let { year ->
|
||||||
|
if (year.isNotEmpty()) {
|
||||||
|
holder.release_date.visibility = View.VISIBLE
|
||||||
|
holder.release_date.text = year
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class ViewHolder(view: View, private val listener: OnAlbumClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener {
|
inner class ViewHolder(view: View, private val listener: OnAlbumClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener {
|
||||||
val art = view.art
|
val art = view.art
|
||||||
val title = view.title
|
val title = view.title
|
||||||
val artist = view.artist
|
val artist = view.artist
|
||||||
|
val release_date = view.release_date
|
||||||
|
|
||||||
override fun onClick(view: View?) {
|
override fun onClick(view: View?) {
|
||||||
listener.onClick(view, data[layoutPosition])
|
listener.onClick(view, data[layoutPosition])
|
||||||
|
|
|
@ -79,7 +79,7 @@ class DownloadsAdapter(private val context: Context, private val listener: OnDow
|
||||||
Download.STATE_QUEUED, Download.STATE_DOWNLOADING -> DownloadService.sendSetStopReason(context, PinService::class.java, download.contentId, 1, false)
|
Download.STATE_QUEUED, Download.STATE_DOWNLOADING -> DownloadService.sendSetStopReason(context, PinService::class.java, download.contentId, 1, false)
|
||||||
|
|
||||||
Download.STATE_FAILED -> {
|
Download.STATE_FAILED -> {
|
||||||
Track(download.id, download.title, Artist(0, download.artist, listOf()), Album(0, Album.Artist(""), "", Covers("")), 0, listOf(Track.Upload(download.contentId, 0, 0))).also {
|
Track(download.id, download.title, Artist(0, download.artist, listOf()), Album(0, Album.Artist(""), "", Covers(""), ""), 0, listOf(Track.Upload(download.contentId, 0, 0))).also {
|
||||||
PinService.download(context, it)
|
PinService.download(context, it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,8 +17,8 @@ class AlbumsRepository(override val context: Context?, artistId: Int? = null) :
|
||||||
|
|
||||||
override val upstream: Upstream<Album> by lazy {
|
override val upstream: Upstream<Album> by lazy {
|
||||||
val url =
|
val url =
|
||||||
if (artistId == null) "/api/v1/albums/?playable=true"
|
if (artistId == null) "/api/v1/albums/?playable=true&ordering=title"
|
||||||
else "/api/v1/albums/?playable=true&artist=$artistId"
|
else "/api/v1/albums/?playable=true&artist=$artistId&ordering=release_date"
|
||||||
|
|
||||||
HttpUpstream<Album, FunkwhaleResponse<Album>>(
|
HttpUpstream<Album, FunkwhaleResponse<Album>>(
|
||||||
HttpUpstream.Behavior.Progressive,
|
HttpUpstream.Behavior.Progressive,
|
||||||
|
|
|
@ -11,7 +11,7 @@ import java.io.BufferedReader
|
||||||
|
|
||||||
class ArtistsRepository(override val context: Context?) : Repository<Artist, ArtistsCache>() {
|
class ArtistsRepository(override val context: Context?) : Repository<Artist, ArtistsCache>() {
|
||||||
override val cacheId = "artists"
|
override val cacheId = "artists"
|
||||||
override val upstream = HttpUpstream<Artist, FunkwhaleResponse<Artist>>(HttpUpstream.Behavior.Progressive, "/api/v1/artists/?playable=true", object : TypeToken<ArtistsResponse>() {}.type)
|
override val upstream = HttpUpstream<Artist, FunkwhaleResponse<Artist>>(HttpUpstream.Behavior.Progressive, "/api/v1/artists/?playable=true&ordering=name", object : TypeToken<ArtistsResponse>() {}.type)
|
||||||
|
|
||||||
override fun cache(data: List<Artist>) = ArtistsCache(data)
|
override fun cache(data: List<Artist>) = ArtistsCache(data)
|
||||||
override fun uncache(reader: BufferedReader) = gsonDeserializerOf(ArtistsCache::class.java).deserialize(reader)
|
override fun uncache(reader: BufferedReader) = gsonDeserializerOf(ArtistsCache::class.java).deserialize(reader)
|
||||||
|
|
|
@ -70,7 +70,8 @@ data class Album(
|
||||||
val id: Int,
|
val id: Int,
|
||||||
val artist: Artist,
|
val artist: Artist,
|
||||||
val title: String,
|
val title: String,
|
||||||
val cover: Covers
|
val cover: Covers,
|
||||||
|
val release_date: String
|
||||||
) : SearchResult {
|
) : SearchResult {
|
||||||
data class Artist(val name: String)
|
data class Artist(val name: String)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
|
||||||
|
<corners android:radius="3dp" />
|
||||||
|
<solid android:color="@color/ripple" />
|
||||||
|
<padding android:top="4dp" android:left="8dp" android:right="8dp" android:bottom="4dp" />
|
||||||
|
|
||||||
|
</shape>
|
|
@ -22,6 +22,7 @@
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -44,4 +45,11 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/release_date"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="0"
|
||||||
|
android:background="@drawable/pill" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
Loading…
Reference in New Issue