package org.mosad.teapod.util import android.view.View import android.view.Window import android.widget.TextView import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsControllerCompat import org.mosad.teapod.parser.crunchyroll.Collection import org.mosad.teapod.parser.crunchyroll.ContinueWatchingItem import org.mosad.teapod.parser.crunchyroll.Item import java.util.* fun TextView.setDrawableTop(drawable: Int) { this.setCompoundDrawablesWithIntrinsicBounds(0, drawable, 0, 0) } fun concatenate(vararg lists: List): List { return listOf(*lists).flatten() } // TODO move to correct location fun Collection.toItemMediaList(): List { return this.items.map { ItemMedia(it.id, it.title, it.images.poster_wide[0][0].source) } } @JvmName("toItemMediaListItem") fun List.toItemMediaList(): List { return this.map { ItemMedia(it.id, it.title, it.images.poster_wide[0][0].source) } } @JvmName("toItemMediaListContinueWatchingItem") fun Collection.toItemMediaList(): List { return items.map { ItemMedia(it.panel.episodeMetadata.seriesId, it.panel.title, it.panel.images.thumbnail[0][0].source) } } fun List.toItemMediaList(): List { return this.map { ItemMedia(it.panel.episodeMetadata.seriesId, it.panel.title, it.panel.images.thumbnail[0][0].source) } } fun Locale.toDisplayString(fallback: String): String { return if (this.displayLanguage.isNotEmpty() && this.displayCountry.isNotEmpty()) { "${this.displayLanguage} (${this.displayCountry})" } else if (this.displayCountry.isNotEmpty()) { this.displayLanguage } else { fallback } } fun hideBars(window: Window?, root: View) { if (window != null) { WindowCompat.setDecorFitsSystemWindows(window, false) WindowInsetsControllerCompat(window, root).let { controller -> controller.hide(WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.navigationBars()) controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE } } }