mirror of
https://github.com/clangen/musikcube.git
synced 2025-02-22 15:40:02 +00:00
Removed AlbumArtModel.AlbumArtCallback; use plain-old-lambdas instead!
This commit is contained in:
parent
97af88ee15
commit
5cbfdb6458
@ -203,8 +203,8 @@ class SystemService : Service() {
|
||||
private fun downloadAlbumArt(title: String, artist: String, album: String, duration: Int) {
|
||||
recycleAlbumArt()
|
||||
|
||||
albumArtModel = AlbumArtModel(title, artist, album, AlbumArtModel.Size.Mega, object: AlbumArtModel.AlbumArtCallback {
|
||||
override fun onFinished(model: AlbumArtModel, url: String?) {
|
||||
albumArtModel = AlbumArtModel(title, artist, album, AlbumArtModel.Size.Mega) {
|
||||
_: AlbumArtModel, url: String? ->
|
||||
if (albumArtModel.matches(artist, album)) {
|
||||
handler.post {
|
||||
if (albumArtRequest != null && albumArtRequest?.request != null) {
|
||||
@ -227,8 +227,7 @@ class SystemService : Service() {
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
albumArtModel.fetch()
|
||||
}
|
||||
|
@ -15,10 +15,9 @@ import java.util.regex.Pattern
|
||||
class AlbumArtModel(val track: String,
|
||||
private val artist: String = "",
|
||||
private val album: String = "",
|
||||
desiredSize: AlbumArtModel.Size,
|
||||
callback: AlbumArtModel.AlbumArtCallback?)
|
||||
private val desiredSize: AlbumArtModel.Size,
|
||||
private var callback: ((AlbumArtModel, String?) -> Unit)? = null)
|
||||
{
|
||||
private var callback: AlbumArtCallback? = null
|
||||
private var fetching: Boolean = false
|
||||
private var noart: Boolean = false
|
||||
|
||||
@ -61,17 +60,13 @@ class AlbumArtModel(val track: String,
|
||||
this.album.equals(album, ignoreCase = true)
|
||||
}
|
||||
|
||||
interface AlbumArtCallback { /* TODO: remove this after converting everything to Kotlin */
|
||||
fun onFinished(model: AlbumArtModel, url: String?)
|
||||
}
|
||||
|
||||
@Synchronized fun fetch(): AlbumArtModel {
|
||||
if (this.fetching || this.noart) {
|
||||
return this
|
||||
}
|
||||
|
||||
if (!Strings.empty(this.url)) {
|
||||
callback?.onFinished(this, this.url)
|
||||
callback?.invoke(this, this.url)
|
||||
}
|
||||
else if (Strings.notEmpty(this.artist) && Strings.notEmpty(this.album)) {
|
||||
val requestUrl: String
|
||||
@ -95,7 +90,7 @@ class AlbumArtModel(val track: String,
|
||||
OK_HTTP.newCall(request).enqueue(object : Callback {
|
||||
override fun onFailure(call: Call, e: IOException) {
|
||||
fetching = false
|
||||
callback?.onFinished(this@AlbumArtModel, null)
|
||||
callback?.invoke(this@AlbumArtModel, null)
|
||||
}
|
||||
|
||||
@Throws(IOException::class)
|
||||
@ -120,7 +115,6 @@ class AlbumArtModel(val track: String,
|
||||
if (imageList.size > 0) {
|
||||
/* find the image with the closest to the requested size.
|
||||
exact match preferred. */
|
||||
val desiredSize = Size.Mega
|
||||
var closest = imageList[0]
|
||||
var lastDelta = Integer.MAX_VALUE
|
||||
for (check in imageList) {
|
||||
@ -143,7 +137,7 @@ class AlbumArtModel(val track: String,
|
||||
|
||||
fetching = false
|
||||
this@AlbumArtModel.url = closest.url
|
||||
callback?.onFinished(this@AlbumArtModel, closest.url)
|
||||
callback?.invoke(this@AlbumArtModel, closest.url)
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -154,12 +148,12 @@ class AlbumArtModel(val track: String,
|
||||
fetching = false
|
||||
}
|
||||
|
||||
callback?.onFinished(this@AlbumArtModel, null)
|
||||
callback?.invoke(this@AlbumArtModel, null)
|
||||
}
|
||||
})
|
||||
}
|
||||
else {
|
||||
callback?.onFinished(this, null)
|
||||
callback?.invoke(this, null)
|
||||
}
|
||||
|
||||
return this
|
||||
@ -175,10 +169,7 @@ class AlbumArtModel(val track: String,
|
||||
private var OK_HTTP: OkHttpClient
|
||||
private val URL_CACHE = LruCache<Int, String>(500)
|
||||
|
||||
private val DEFAULT_CALLBACK = object : AlbumArtCallback {
|
||||
override fun onFinished(model: AlbumArtModel, url: String?) {
|
||||
}
|
||||
}
|
||||
private val DEFAULT_CALLBACK: (AlbumArtModel, String?) -> Unit = { _, _ -> }
|
||||
|
||||
init {
|
||||
OK_HTTP = OkHttpClient.Builder()
|
||||
@ -223,7 +214,7 @@ class AlbumArtModel(val track: String,
|
||||
for (pattern in BAD_PATTERNS) {
|
||||
result = pattern.matcher(result).replaceAll("")
|
||||
}
|
||||
return result.trim { it <= ' ' }
|
||||
return result.trim { it.isWhitespace() }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,6 @@ import io.casey.musikcube.remote.ui.activity.AlbumBrowseActivity
|
||||
import io.casey.musikcube.remote.ui.activity.TrackListActivity
|
||||
import io.casey.musikcube.remote.ui.extension.getColorCompat
|
||||
import io.casey.musikcube.remote.ui.model.AlbumArtModel
|
||||
import io.casey.musikcube.remote.ui.model.AlbumArtModel.AlbumArtCallback
|
||||
import io.casey.musikcube.remote.util.Strings
|
||||
import io.casey.musikcube.remote.websocket.Messages
|
||||
import io.casey.musikcube.remote.websocket.Prefs
|
||||
@ -241,13 +240,17 @@ class MainMetadataView : FrameLayout {
|
||||
.load(url)
|
||||
.diskCacheStrategy(DiskCacheStrategy.ALL)
|
||||
.listener(object : RequestListener<String, GlideDrawable> {
|
||||
override fun onException(e: Exception, model: String, target: Target<GlideDrawable>, first: Boolean): Boolean {
|
||||
override fun onException(
|
||||
e: Exception, model: String, target: Target<GlideDrawable>,
|
||||
first: Boolean): Boolean {
|
||||
setMetadataDisplayMode(DisplayMode.NoArtwork)
|
||||
lastArtworkUrl = null
|
||||
return false
|
||||
}
|
||||
|
||||
override fun onResourceReady(resource: GlideDrawable, model: String, target: Target<GlideDrawable>, memory: Boolean, first: Boolean): Boolean {
|
||||
override fun onResourceReady(
|
||||
resource: GlideDrawable, model: String, target: Target<GlideDrawable>,
|
||||
memory: Boolean, first: Boolean): Boolean {
|
||||
if (!isPaused) {
|
||||
preloadNextImage()
|
||||
}
|
||||
@ -285,16 +288,15 @@ class MainMetadataView : FrameLayout {
|
||||
val album = track.optString(Metadata.Track.ALBUM, "")
|
||||
|
||||
if (!albumArtModel.matches(artist, album)) {
|
||||
AlbumArtModel("", artist, album, AlbumArtModel.Size.Mega, object: AlbumArtCallback {
|
||||
override fun onFinished(model: AlbumArtModel, url: String?) {
|
||||
AlbumArtModel("", artist, album, AlbumArtModel.Size.Mega) {
|
||||
_: AlbumArtModel, url: String? ->
|
||||
val width = albumArtImageView!!.width
|
||||
val height = albumArtImageView!!.height
|
||||
Glide.with(context).load(url).downloadOnly(width, height)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun init() {
|
||||
@ -353,16 +355,15 @@ class MainMetadataView : FrameLayout {
|
||||
override fun onInvalidPassword() {}
|
||||
}
|
||||
|
||||
private var albumArtRetrieved = object : AlbumArtCallback {
|
||||
override fun onFinished(model: AlbumArtModel, url: String?) {
|
||||
handler.post {
|
||||
if (model === albumArtModel) {
|
||||
if (Strings.empty(model.url)) {
|
||||
setMetadataDisplayMode(DisplayMode.NoArtwork)
|
||||
}
|
||||
else {
|
||||
updateAlbumArt()
|
||||
}
|
||||
private var albumArtRetrieved: (AlbumArtModel, String?) -> Unit = {
|
||||
model: AlbumArtModel, _: String? ->
|
||||
handler.post {
|
||||
if (model === albumArtModel) {
|
||||
if (Strings.empty(model.url)) {
|
||||
setMetadataDisplayMode(DisplayMode.NoArtwork)
|
||||
}
|
||||
else {
|
||||
updateAlbumArt()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user