Browse Source

Background updated by moviepedia items + background scaling fix

Fixes #1108 #1074
merge-requests/382/head
Nicolas Pomepuy 7 years ago
committed by Geoffrey Métais
parent
commit
15ee2fff50
  1. 4
      vlc-android/src/org/videolan/vlc/gui/tv/MainTvFragment.kt
  2. 28
      vlc-android/src/org/videolan/vlc/gui/tv/TvUtil.kt
  3. 3
      vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseBrowserTvFragment.kt
  4. 4
      vlc-android/src/org/videolan/vlc/gui/tv/browser/CategoriesFragment.kt

4
vlc-android/src/org/videolan/vlc/gui/tv/MainTvFragment.kt

@ -258,7 +258,7 @@ class MainTvFragment : BrowseSupportFragment(), OnItemViewSelectedListener, OnIt
override fun onStart() {
super.onStart()
if (selectedItem is AbstractMediaWrapper) lifecycleScope.updateBackground(requireContext(), backgroundManager, selectedItem)
if (selectedItem is AbstractMediaWrapper) lifecycleScope.updateBackground(requireActivity(), backgroundManager, selectedItem)
model.refresh()
}
@ -313,6 +313,6 @@ class MainTvFragment : BrowseSupportFragment(), OnItemViewSelectedListener, OnIt
override fun onItemSelected(itemViewHolder: Presenter.ViewHolder?, item: Any?, rowViewHolder: RowPresenter.ViewHolder?, row: Row?) {
selectedItem = item
lifecycleScope.updateBackground(requireContext(), backgroundManager, item)
lifecycleScope.updateBackground(requireActivity(), backgroundManager, item)
}
}

28
vlc-android/src/org/videolan/vlc/gui/tv/TvUtil.kt

@ -136,7 +136,8 @@ object TvUtil {
when (item) {
is AbstractMediaWrapper -> when {
item.type == AbstractMediaWrapper.TYPE_AUDIO -> {
val list = (model?.dataset?.getList() as? List<AbstractMediaWrapper>)?.filter { it.type != AbstractMediaWrapper.TYPE_DIR } ?: return
val list = (model?.dataset?.getList() as? List<AbstractMediaWrapper>)?.filter { it.type != AbstractMediaWrapper.TYPE_DIR }
?: return
val position = list.getposition(item)
playAudioList(activity, list, position)
}
@ -363,36 +364,45 @@ object TvUtil {
@Suppress("UNNECESSARY_SAFE_CALL")
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
fun CoroutineScope.updateBackground(context: Context, bm: BackgroundManager?, item: Any?) {
fun CoroutineScope.updateBackground(activity: Activity, bm: BackgroundManager?, item: Any?) {
if (bm === null || item === null) {
clearBackground(context, bm)
clearBackground(activity, bm)
return
}
val screenRatio: Float = activity.getScreenWidth().toFloat() / activity.getScreenHeight()
if (item is MediaLibraryItem) launch {
val crop = item.itemType != MediaLibraryItem.TYPE_MEDIA || (item as AbstractMediaWrapper).type == AbstractMediaWrapper.TYPE_AUDIO
val artworkMrl = item.artworkMrl
if (!TextUtils.isEmpty(artworkMrl)) {
val blurred = withContext(Dispatchers.IO) {
var cover: Bitmap? = AudioUtil.readCoverBitmap(Uri.decode(artworkMrl), 512)
?: return@withContext null
if (cover != null && crop)
cover = BitmapUtil.centerCrop(cover, cover.width, cover.width * 10 / 16)
if (cover != null) cover = BitmapUtil.centerCrop(cover, cover.width, (cover.width / screenRatio).toInt())
UiTools.blurBitmap(cover, 10f)
}
if (!isActive) return@launch
bm?.color = 0
bm?.drawable = BitmapDrawable(context.resources, blurred)
bm?.drawable = BitmapDrawable(activity.resources, blurred)
} else if (item.itemType == MediaLibraryItem.TYPE_PLAYLIST) {
val blurred = withContext(Dispatchers.IO) {
var cover: Bitmap? = ThumbnailsProvider.getPlaylistImage("playlist:${item.id}", item.tracks.toList(), 512)
?: return@withContext null
if (crop) cover = cover?.let { BitmapUtil.centerCrop(it, it.width, it.width * 10 / 16) }
cover = cover?.let { BitmapUtil.centerCrop(it, it.width, (it.width / screenRatio).toInt()) }
UiTools.blurBitmap(cover, 10f)
}
if (!isActive) return@launch
bm?.color = 0
bm?.drawable = BitmapDrawable(context.resources, blurred)
bm?.drawable = BitmapDrawable(activity.resources, blurred)
}
} else if (item is MediaMetadataWithImages) launch {
val blurred = withContext(Dispatchers.IO) {
var cover: Bitmap? = HttpImageLoader.downloadBitmap(item.metadata.currentPoster)
cover?.let { cover = BitmapUtil.centerCrop(it, it.width, (it.width / screenRatio).toInt()) }
UiTools.blurBitmap(cover, 10f)
}
if (!isActive) return@launch
bm?.color = 0
bm?.drawable = BitmapDrawable(activity.resources, blurred)
}
}

3
vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseBrowserTvFragment.kt

@ -24,6 +24,7 @@
package org.videolan.vlc.gui.tv.browser
import android.annotation.TargetApi
import android.app.Activity
import android.content.res.Configuration
import android.graphics.Rect
import android.os.Build
@ -240,7 +241,7 @@ abstract class BaseBrowserTvFragment<T> : Fragment(), BrowserFragmentInterface,
(item as? MediaLibraryItem)?.run {
if (currentArt == artworkMrl) return@run
currentArt = artworkMrl
lifecycleScope.updateBackground(v.context, backgroundManager, this)
lifecycleScope.updateBackground(v.context as Activity, backgroundManager, this)
}
}

4
vlc-android/src/org/videolan/vlc/gui/tv/browser/CategoriesFragment.kt

@ -82,7 +82,7 @@ open class CategoriesFragment<T : BaseModel<out MediaLibraryItem>> : BrowseSuppo
override fun onStart() {
super.onStart()
if (this::selecteditem.isInitialized) lifecycleScope.updateBackground(requireContext(), backgroundManager, selecteditem)
if (this::selecteditem.isInitialized) lifecycleScope.updateBackground(requireActivity(), backgroundManager, selecteditem)
if (restart) refresh()
restart = true
}
@ -93,7 +93,7 @@ open class CategoriesFragment<T : BaseModel<out MediaLibraryItem>> : BrowseSuppo
selecteditem = item as AbstractMediaWrapper
if (currentArt == item.artworkMrl) return
currentArt = item.artworkMrl
lifecycleScope.updateBackground(requireContext(), backgroundManager, item)
lifecycleScope.updateBackground(requireActivity(), backgroundManager, item)
}
override fun onItemClicked(viewHolder: Presenter.ViewHolder, item: Any, viewHolder1: RowPresenter.ViewHolder, row: Row) {

Loading…
Cancel
Save