Skip to content
Snippets Groups Projects
Commit 88faecb6 authored by Geoffrey Métais's avatar Geoffrey Métais
Browse files

Deactivate kotlinx view binding for television

parent 6d7be81f
No related branches found
No related tags found
1 merge request!439Viewbinding
......@@ -9,6 +9,10 @@ android {
pickFirst '**/*.so'
}
androidExtensions {
features = ["parcelize"]
}
kotlinOptions.jvmTarget = "1.8"
android {
......
......@@ -33,16 +33,16 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.transition.ChangeBounds
import androidx.transition.Transition
import androidx.transition.TransitionManager
import kotlinx.android.synthetic.main.song_browser.*
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.ObsoleteCoroutinesApi
import org.videolan.television.R
import org.videolan.television.databinding.SongBrowserBinding
import org.videolan.television.ui.browser.BaseBrowserTvFragment
import org.videolan.vlc.BuildConfig
@ObsoleteCoroutinesApi
@ExperimentalCoroutinesApi
internal class MediaBrowserAnimatorDelegate(val browser: BaseBrowserTvFragment<*>, private val cl: ConstraintLayout) : RecyclerView.OnScrollListener(), View.OnFocusChangeListener {
internal class MediaBrowserAnimatorDelegate(val binding: SongBrowserBinding, private val cl: ConstraintLayout) : RecyclerView.OnScrollListener(), View.OnFocusChangeListener {
private val scrolledUpConstraintSet = ConstraintSet()
private val scrolledDownFABCollapsedConstraintSet = ConstraintSet()
......@@ -55,12 +55,12 @@ internal class MediaBrowserAnimatorDelegate(val browser: BaseBrowserTvFragment<*
interpolator = AccelerateDecelerateInterpolator()
duration = 300
}
private val fakeToolbar = browser.toolbar
private val fabSettings = browser.imageButtonSettings
private val fabHeader = browser.imageButtonHeader
private val fabFavorite = browser.imageButtonFavorite
private val fabSort = browser.imageButtonSort
private val fabDisplay = browser.imageButtonDisplay
private val fakeToolbar = binding.toolbar
private val fabSettings = binding.imageButtonSettings
private val fabHeader = binding.imageButtonHeader
private val fabFavorite = binding.imageButtonFavorite
private val fabSort = binding.imageButtonSort
private val fabDisplay = binding.imageButtonDisplay
private var currenstate = MediaBrowserState.SCROLLED_UP
set(value) {
......@@ -111,10 +111,10 @@ internal class MediaBrowserAnimatorDelegate(val browser: BaseBrowserTvFragment<*
override fun onFocusChange(v: View, hasFocus: Boolean) {
//Show action labels when needed
val view = when (v) {
browser.displayButton -> browser.displayDescription
browser.headerButton -> browser.headerDescription
browser.sortButton -> browser.sortDescription
browser.favoriteButton -> browser.favoriteDescription
binding.displayButton -> binding.displayDescription
binding.headerButton -> binding.headerDescription
binding.sortButton -> binding.sortDescription
binding.favoriteButton -> binding.favoriteDescription
else -> null
}
......@@ -284,7 +284,7 @@ internal class MediaBrowserAnimatorDelegate(val browser: BaseBrowserTvFragment<*
fakeToolbar.visibility = View.GONE
}
if (currenstate == MediaBrowserState.HEADER_VISIBLE) {
browser.headerList.requestFocus()
binding.headerList.requestFocus()
}
}
......@@ -304,14 +304,14 @@ internal class MediaBrowserAnimatorDelegate(val browser: BaseBrowserTvFragment<*
@ObsoleteCoroutinesApi
@ExperimentalCoroutinesApi
fun BaseBrowserTvFragment<*>.setAnimator(cl: ConstraintLayout) {
animationDelegate = MediaBrowserAnimatorDelegate(this, cl)
headerButton.onFocusChangeListener = animationDelegate
displayButton.onFocusChangeListener = animationDelegate
sortButton.onFocusChangeListener = animationDelegate
favoriteButton.onFocusChangeListener = animationDelegate
imageButtonSort.onFocusChangeListener = animationDelegate
imageButtonDisplay.onFocusChangeListener = animationDelegate
imageButtonHeader.onFocusChangeListener = animationDelegate
imageButtonSettings.onFocusChangeListener = animationDelegate
list.addOnScrollListener(animationDelegate)
animationDelegate = MediaBrowserAnimatorDelegate(binding, cl)
binding.headerButton.onFocusChangeListener = animationDelegate
binding.displayButton.onFocusChangeListener = animationDelegate
binding.sortButton.onFocusChangeListener = animationDelegate
binding.favoriteButton.onFocusChangeListener = animationDelegate
binding.imageButtonSort.onFocusChangeListener = animationDelegate
binding.imageButtonDisplay.onFocusChangeListener = animationDelegate
binding.imageButtonHeader.onFocusChangeListener = animationDelegate
binding.imageButtonSettings.onFocusChangeListener = animationDelegate
binding.list.addOnScrollListener(animationDelegate)
}
......@@ -13,7 +13,6 @@ import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.song_browser.*
import kotlinx.coroutines.*
import org.videolan.medialibrary.MLServiceLocator
import org.videolan.medialibrary.interfaces.Medialibrary
......@@ -96,7 +95,7 @@ class FileBrowserTvFragment : BaseBrowserTvFragment<MediaLibraryItem>(), PathAda
//headers
val nbColumns = if ((viewModel as BrowserModel).sort == Medialibrary.SORT_ALPHA || (viewModel as BrowserModel).sort == Medialibrary.SORT_DEFAULT) 9 else 1
headerList.layoutManager = GridLayoutManager(requireActivity(), nbColumns)
binding.headerList.layoutManager = GridLayoutManager(requireActivity(), nbColumns)
headerAdapter.sortType = (viewModel as BrowserModel).sort
val headerItems = ArrayList<String>()
viewModel.provider.headers.run {
......
......@@ -6,7 +6,6 @@ import android.view.View
import androidx.lifecycle.Observer
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.GridLayoutManager
import kotlinx.android.synthetic.main.song_browser.*
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.ObsoleteCoroutinesApi
import org.videolan.medialibrary.interfaces.Medialibrary
......@@ -85,7 +84,7 @@ class MediaBrowserTvFragment : BaseBrowserTvFragment<MediaLibraryItem>() {
//headers
val nbColumns = if ((viewModel as MediaBrowserViewModel).sort == Medialibrary.SORT_ALPHA || (viewModel as MediaBrowserViewModel).sort == Medialibrary.SORT_DEFAULT) 9 else 1
headerList.layoutManager = GridLayoutManager(requireActivity(), nbColumns)
binding.headerList.layoutManager = GridLayoutManager(requireActivity(), nbColumns)
headerAdapter.sortType = (viewModel as MediaBrowserViewModel).sort
val headerItems = ArrayList<String>()
viewModel.provider.headers.run {
......
......@@ -30,7 +30,6 @@ import android.view.View
import androidx.lifecycle.Observer
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.GridLayoutManager
import kotlinx.android.synthetic.main.song_browser.*
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.ObsoleteCoroutinesApi
import org.videolan.medialibrary.interfaces.Medialibrary
......@@ -98,7 +97,7 @@ class MoviepediaBrowserTvFragment : BaseBrowserTvFragment<MediaMetadataWithImage
//headers
val nbColumns = if ((viewModel as MoviepediaBrowserViewModel).sort == Medialibrary.SORT_ALPHA || (viewModel as MoviepediaBrowserViewModel).sort == Medialibrary.SORT_DEFAULT) 9 else 1
headerList.layoutManager = GridLayoutManager(requireActivity(), nbColumns)
binding.headerList.layoutManager = GridLayoutManager(requireActivity(), nbColumns)
headerAdapter.sortType = (viewModel as MoviepediaBrowserViewModel).sort
val headerItems = ArrayList<String>()
viewModel.provider.headers.run {
......
......@@ -24,10 +24,10 @@ import android.annotation.TargetApi
import android.os.Build
import android.os.Bundle
import android.view.KeyEvent
import android.view.LayoutInflater
import android.view.View
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import kotlinx.android.synthetic.main.tv_vertical_grid.*
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.ObsoleteCoroutinesApi
import kotlinx.coroutines.launch
......@@ -35,10 +35,11 @@ import org.videolan.medialibrary.MLServiceLocator
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.resources.*
import org.videolan.television.R
import org.videolan.television.databinding.TvVerticalGridBinding
import org.videolan.television.ui.MainTvActivity
import org.videolan.television.ui.browser.interfaces.BrowserActivityInterface
import org.videolan.vlc.interfaces.BrowserFragmentInterface
import org.videolan.television.ui.browser.interfaces.DetailsFragment
import org.videolan.vlc.interfaces.BrowserFragmentInterface
import org.videolan.vlc.interfaces.Sortable
import org.videolan.vlc.viewmodels.browser.TYPE_FILE
import org.videolan.vlc.viewmodels.browser.TYPE_NETWORK
......@@ -49,10 +50,12 @@ import org.videolan.vlc.viewmodels.browser.TYPE_NETWORK
class VerticalGridActivity : BaseTvActivity(), BrowserActivityInterface {
private lateinit var fragment: BrowserFragmentInterface
private lateinit var binding : TvVerticalGridBinding
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.tv_vertical_grid)
binding = TvVerticalGridBinding.inflate(LayoutInflater.from(this))
setContentView(binding.root)
if (savedInstanceState == null) {
val type = intent.getLongExtra(MainTvActivity.BROWSER_TYPE, -1)
if (type == HEADER_VIDEO) {
......@@ -107,13 +110,13 @@ class VerticalGridActivity : BaseTvActivity(), BrowserActivityInterface {
override fun showProgress(show: Boolean) {
lifecycleScope.launch {
tv_fragment_empty.visibility = View.GONE
tv_fragment_progress.visibility = if (show) View.VISIBLE else View.GONE
binding.tvFragmentEmpty.visibility = View.GONE
binding.tvFragmentProgress.visibility = if (show) View.VISIBLE else View.GONE
}
}
override fun updateEmptyView(empty: Boolean) {
lifecycleScope.launch { tv_fragment_empty.visibility = if (empty) View.VISIBLE else View.GONE }
lifecycleScope.launch { binding.tvFragmentEmpty.visibility = if (empty) View.VISIBLE else View.GONE }
}
fun sort(v: View) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment