Browse Source

Move lambda arguments outside of parentheses

And other lint fixes
merge-requests/1287/head
Nicolas Pomepuy 5 years ago
parent
commit
91e69a05e0
  1. 4
      application/moviepedia/src/main/java/org/videolan/moviepedia/ui/MediaScrapingActivity.kt
  2. 4
      application/tools/src/main/java/videolan/org/commontools/LiveEvent.kt
  3. 18
      application/vlc-android/src/org/videolan/vlc/ArtworkProvider.kt
  4. 4
      application/vlc-android/src/org/videolan/vlc/MediaParsingService.kt
  5. 10
      application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
  6. 12
      application/vlc-android/src/org/videolan/vlc/gui/AudioPlayerContainerActivity.kt
  7. 8
      application/vlc-android/src/org/videolan/vlc/gui/ContentActivity.kt
  8. 4
      application/vlc-android/src/org/videolan/vlc/gui/HistoryFragment.kt
  9. 10
      application/vlc-android/src/org/videolan/vlc/gui/InfoActivity.kt
  10. 12
      application/vlc-android/src/org/videolan/vlc/gui/MoreFragment.kt
  11. 8
      application/vlc-android/src/org/videolan/vlc/gui/PlaylistActivity.kt
  12. 14
      application/vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt
  13. 20
      application/vlc-android/src/org/videolan/vlc/gui/audio/AudioAlbumsSongsFragment.kt
  14. 16
      application/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserFragment.kt
  15. 10
      application/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt
  16. 8
      application/vlc-android/src/org/videolan/vlc/gui/browser/ExtensionBrowser.kt
  17. 22
      application/vlc-android/src/org/videolan/vlc/gui/browser/MLStorageBrowserFragment.kt
  18. 36
      application/vlc-android/src/org/videolan/vlc/gui/browser/MainBrowserFragment.kt
  19. 4
      application/vlc-android/src/org/videolan/vlc/gui/dialogs/AddToGroupDialog.kt
  20. 2
      application/vlc-android/src/org/videolan/vlc/gui/dialogs/PickTimeFragment.kt
  21. 4
      application/vlc-android/src/org/videolan/vlc/gui/dialogs/RenderersDialog.kt
  22. 4
      application/vlc-android/src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt
  23. 12
      application/vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloaderDialogFragment.kt
  24. 4
      application/vlc-android/src/org/videolan/vlc/gui/network/MRLPanelFragment.kt
  25. 2
      application/vlc-android/src/org/videolan/vlc/gui/preferences/BasePreferenceFragment.kt
  26. 2
      application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesExtensionFragment.kt
  27. 8
      application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceSearchActivity.kt
  28. 8
      application/vlc-android/src/org/videolan/vlc/gui/video/VideoGridFragment.kt
  29. 20
      application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerOverlayDelegate.kt
  30. 2
      application/vlc-android/src/org/videolan/vlc/media/MediaSessionBrowser.kt
  31. 6
      application/vlc-android/src/org/videolan/vlc/util/DialogDelegates.kt

4
application/moviepedia/src/main/java/org/videolan/moviepedia/ui/MediaScrapingActivity.kt

@ -78,9 +78,9 @@ open class MediaScrapingActivity : BaseActivity(), TextWatcher, TextView.OnEdito
binding.searchEditText.setOnEditorActionListener(this)
viewModel = ViewModelProvider(this).get(media.uri.path
?: "", MediaScrapingModel::class.java)
viewModel.apiResult.observe(this, {
viewModel.apiResult.observe(this) {
mediaScrapingResultAdapter.setItems(it.getAllResults())
})
}
viewModel.search(media.uri)
binding.searchEditText.setText(media.title)
}

4
application/tools/src/main/java/videolan/org/commontools/LiveEvent.kt

@ -36,9 +36,9 @@ class LiveEvent<T> : MutableLiveData<T>() {
override fun observe(owner: LifecycleOwner, observer: Observer<in T>) {
if (hasActiveObservers()) Log.w(TAG, "Multiple observers registered but only one will be notified of changes.")
// Observe the internal MutableLiveData
super.observe(owner, { t ->
super.observe(owner) { t ->
if (pending.compareAndSet(true, false)) observer.onChanged(t)
})
}
}
override fun observeForever(observer: Observer<in T>) {

18
application/vlc-android/src/org/videolan/vlc/ArtworkProvider.kt

@ -378,21 +378,21 @@ class ArtworkProvider : ContentProvider() {
* compressed data stream directly to the file descriptor with no intermediate byte array.
*/
private fun getPFDFromBitmap(bitmap: Bitmap?): ParcelFileDescriptor {
return super.openPipeHelper(Uri.EMPTY, MIME_TYPE_IMAGE_WEBP, null, bitmap,
{ pfd: ParcelFileDescriptor, _: Uri, _: String, _: Bundle?, bitmap: Bitmap? ->
/* Compression is performed on an AsyncTask thread within openPipeHelper() */
bitmap?.compress(CompressFormat.WEBP, 100, FileOutputStream(pfd.fileDescriptor))
})
return super.openPipeHelper(Uri.EMPTY, MIME_TYPE_IMAGE_WEBP, null, bitmap
) { pfd: ParcelFileDescriptor, _: Uri, _: String, _: Bundle?, bitmap: Bitmap? ->
/* Compression is performed on an AsyncTask thread within openPipeHelper() */
bitmap?.compress(CompressFormat.WEBP, 100, FileOutputStream(pfd.fileDescriptor))
}
}
/**
* Return a ParcelFileDescriptor from an existing image in a byte array.
*/
private fun getPFDFromByteArray(byteArray: ByteArray?): ParcelFileDescriptor {
return super.openPipeHelper(Uri.EMPTY, MIME_TYPE_IMAGE_WEBP, null, byteArray,
{ pfd: ParcelFileDescriptor, _: Uri, _: String, _: Bundle?, byteArray: ByteArray? ->
if (byteArray != null) FileOutputStream(pfd.fileDescriptor).write(byteArray)
})
return super.openPipeHelper(Uri.EMPTY, MIME_TYPE_IMAGE_WEBP, null, byteArray
) { pfd: ParcelFileDescriptor, _: Uri, _: String, _: Bundle?, byteArray: ByteArray? ->
if (byteArray != null) FileOutputStream(pfd.fileDescriptor).write(byteArray)
}
}
private val dateFormatter by lazy {

4
application/vlc-android/src/org/videolan/vlc/MediaParsingService.kt

@ -136,11 +136,11 @@ class MediaParsingService : LifecycleService(), DevicesDiscoveryCb {
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "VLC:MediaParsigService")
if (lastNotificationTime == 5L) stopService(Intent(applicationContext, MediaParsingService::class.java))
Medialibrary.getState().observe(this, { running ->
Medialibrary.getState().observe(this) { running ->
if (!running) {
exitCommand()
}
})
}
medialibrary.exceptionHandler = exceptionHandler
setupScope()
}

10
application/vlc-android/src/org/videolan/vlc/PlaybackService.kt

@ -630,10 +630,10 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner {
registerReceiver(receiver, filter)
keyguardManager = getSystemService()!!
renderer.observe(this, { setRenderer(it) })
restartPlayer.observe(this, { restartPlaylistManager() })
headSetDetection.observe(this, { detectHeadset(it) })
equalizer.observe(this, { setEqualizer(it) })
renderer.observe(this) { setRenderer(it) }
restartPlayer.observe(this) { restartPlaylistManager() }
headSetDetection.observe(this) { detectHeadset(it) }
equalizer.observe(this) { setEqualizer(it) }
serviceFlow.value = this
}
@ -1317,7 +1317,7 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner {
try {
val artworkMrl = media.artworkMrl
if (!artworkMrl.isNullOrEmpty() && isPathValid(artworkMrl)) {
val artworkUri = artworkToUriCache.getOrPut(artworkMrl, { ArtworkProvider.buildMediaUri(media) } )
val artworkUri = artworkToUriCache.getOrPut(artworkMrl) { ArtworkProvider.buildMediaUri(media) }
val key = MediaSessionBrowser.generateMediaId(media)
it[key] = artworkUri
}

12
application/vlc-android/src/org/videolan/vlc/gui/AudioPlayerContainerActivity.kt

@ -480,14 +480,14 @@ open class AudioPlayerContainerActivity : BaseActivity(), KeycodeListener {
protected open fun onPlayerStateChanged(bottomSheet: View, newState: Int) {}
private fun registerLiveData() {
PlaylistManager.showAudioPlayer.observe(this, { showPlayer ->
PlaylistManager.showAudioPlayer.observe(this) { showPlayer ->
if (showPlayer == true) showAudioPlayer()
else {
hideAudioPlayer()
if (isAudioPlayerReady) playerBehavior.lock(true)
}
})
MediaParsingService.progress.observe(this, { scanProgress ->
}
MediaParsingService.progress.observe(this) { scanProgress ->
if (scanProgress == null || !Medialibrary.getInstance().isWorking) {
updateProgressVisibility(false)
return@observe
@ -506,15 +506,15 @@ open class AudioPlayerContainerActivity : BaseActivity(), KeycodeListener {
scanProgressBar?.isIndeterminate = false
scanProgressBar?.isVisible = true
}
})
}
MediaParsingService.discoveryError.observe(this) {
UiTools.snacker(this, getString(R.string.discovery_failed, it.entryPoint))
}
MediaParsingService.newStorages.observe(this, { devices ->
MediaParsingService.newStorages.observe(this) { devices ->
if (devices == null) return@observe
for (device in devices) UiTools.newStorageDetected(this@AudioPlayerContainerActivity, device)
MediaParsingService.newStorages.setValue(null)
})
}
}
@SuppressLint("RestrictedApi")

8
application/vlc-android/src/org/videolan/vlc/gui/ContentActivity.kt

@ -59,16 +59,16 @@ open class ContentActivity : AudioPlayerContainerActivity(), SearchView.OnQueryT
super.initAudioPlayerContainerActivity()
if (!AndroidDevices.isChromeBook && !AndroidDevices.isAndroidTv
&& Settings.getInstance(this).getBoolean("enable_casting", true)) {
PlaybackService.renderer.observe(this, {
PlaybackService.renderer.observe(this) {
val item = toolbar.menu.findItem(R.id.ml_menu_renderers) ?: return@observe
item.isVisible = !hideRenderers() && showRenderers
item.setIcon(if (!PlaybackService.hasRenderer()) R.drawable.ic_am_renderer else R.drawable.ic_am_renderer_on)
})
RendererDelegate.renderers.observe(this, { rendererItems ->
}
RendererDelegate.renderers.observe(this) { rendererItems ->
showRenderers = !rendererItems.isNullOrEmpty()
val item = toolbar.menu.findItem(R.id.ml_menu_renderers)
if (item != null) item.isVisible = !hideRenderers() && showRenderers
})
}
}
}

4
application/vlc-android/src/org/videolan/vlc/gui/HistoryFragment.kt

@ -66,7 +66,7 @@ class HistoryFragment : MediaBrowserFragment<HistoryModel>(), IRefreshable, IHis
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel = ViewModelProvider(requireActivity(), HistoryModel.Factory(requireContext())).get(HistoryModel::class.java)
viewModel.dataset.observe(viewLifecycleOwner, { list ->
viewModel.dataset.observe(viewLifecycleOwner) { list ->
list?.let {
historyAdapter.update(it)
updateEmptyView()
@ -74,7 +74,7 @@ class HistoryFragment : MediaBrowserFragment<HistoryModel>(), IRefreshable, IHis
cleanMenuItem.isVisible = list.isNotEmpty()
}
}
})
}
viewModel.loading.observe(viewLifecycleOwner) {
(activity as? MainActivity)?.refreshing = it
}

10
application/vlc-android/src/org/videolan/vlc/gui/InfoActivity.kt

@ -100,10 +100,10 @@ class InfoActivity : AudioPlayerContainerActivity(), View.OnClickListener, PathA
if (model.sizeText.value === null) model.checkFile(item)
if (model.mediaTracks.value === null) model.parseTracks(this, item)
}
model.hasSubs.observe(this, { if (it) binding.infoSubtitles.visibility = View.VISIBLE })
model.mediaTracks.observe(this, { adapter.setTracks(it) })
model.sizeText.observe(this, { binding.sizeValueText = it })
model.cover.observe(this, {
model.hasSubs.observe(this) { if (it) binding.infoSubtitles.visibility = View.VISIBLE }
model.mediaTracks.observe(this) { adapter.setTracks(it) }
model.sizeText.observe(this) { binding.sizeValueText = it }
model.cover.observe(this) {
if (it != null) {
binding.cover = BitmapDrawable(this@InfoActivity.resources, it)
lifecycleScope.launch {
@ -112,7 +112,7 @@ class InfoActivity : AudioPlayerContainerActivity(), View.OnClickListener, PathA
if (fabVisibility != -1) binding.fab.visibility = fabVisibility
}
} else noCoverFallback()
})
}
if (model.cover.value === null) model.getCover(item, getScreenWidth())
updateMeta()
binding.directoryNotScannedButton.setOnClickListener {

12
application/vlc-android/src/org/videolan/vlc/gui/MoreFragment.kt

@ -100,7 +100,7 @@ class MoreFragment : BaseFragment(), IRefreshable, IHistory, IDialogManager,
historyEntry = view.findViewById(R.id.history_entry)
if (!Settings.getInstance(requireActivity()).getBoolean(PLAYBACK_HISTORY, true)) historyEntry.setGone()
viewModel = ViewModelProvider(requireActivity(), HistoryModel.Factory(requireContext())).get(HistoryModel::class.java)
viewModel.dataset.observe(viewLifecycleOwner, { list ->
viewModel.dataset.observe(viewLifecycleOwner) { list ->
list?.let {
historyAdapter.update(it)
if (list.isEmpty()) historyEntry.setGone() else {
@ -110,7 +110,7 @@ class MoreFragment : BaseFragment(), IRefreshable, IHistory, IDialogManager,
if (list.isNotEmpty()) historyEntry.actionButton.setVisible() else historyEntry.actionButton.setGone()
}
restoreMultiSelectHelper()
})
}
viewModel.loading.observe(viewLifecycleOwner) {
lifecycleScope.launchWhenStarted {
if (it) delay(300L)
@ -132,18 +132,18 @@ class MoreFragment : BaseFragment(), IRefreshable, IHistory, IDialogManager,
i.putExtra("fragment", SecondaryActivity.STREAMS)
requireActivity().startActivityForResult(i, SecondaryActivity.ACTIVITY_RESULT_SECONDARY)
}
streamsViewModel.dataset.observe(requireActivity(), {
streamsViewModel.dataset.observe(requireActivity()) {
streamsAdapter.update(it)
streamsEntry.loading.state = EmptyLoadingState.NONE
})
streamsViewModel.loading.observe(requireActivity(), {
}
streamsViewModel.loading.observe(requireActivity()) {
lifecycleScope.launchWhenStarted {
if (it) delay(300L)
(activity as? MainActivity)?.refreshing = it
if (it) streamsEntry.loading.state = EmptyLoadingState.LOADING
}
})
}
settingsButton.setOnClickListener {
requireActivity().startActivityForResult(Intent(activity, PreferencesActivity::class.java), ACTIVITY_RESULT_PREFERENCES)

8
application/vlc-android/src/org/videolan/vlc/gui/PlaylistActivity.kt

@ -113,16 +113,16 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler<Med
isPlaylist = playlist.itemType == MediaLibraryItem.TYPE_PLAYLIST
binding.playlist = playlist
viewModel = getViewModel(playlist)
viewModel.tracksProvider.pagedList.observe(this, { tracks ->
viewModel.tracksProvider.pagedList.observe(this) { tracks ->
@Suppress("UNCHECKED_CAST")
(tracks as? PagedList<MediaLibraryItem>)?.let { audioBrowserAdapter.submitList(it) }
menu.let { UiTools.updateSortTitles(it, viewModel.tracksProvider) }
if (::itemTouchHelperCallback.isInitialized) itemTouchHelperCallback.swipeEnabled = true
})
}
viewModel.tracksProvider.liveHeaders.observe(this, {
viewModel.tracksProvider.liveHeaders.observe(this) {
binding.songs.invalidateItemDecorations()
})
}
audioBrowserAdapter = AudioBrowserAdapter(MediaLibraryItem.TYPE_MEDIA, this, this, isPlaylist)
if (isPlaylist) {
itemTouchHelperCallback = SwipeDragItemTouchHelperCallback(audioBrowserAdapter)

14
application/vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt

@ -111,17 +111,17 @@ class PlaylistFragment : BaseAudioBrowser<PlaylistsViewModel>(), SwipeRefreshLay
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel.provider.pagedList.observe(requireActivity(), {
viewModel.provider.pagedList.observe(requireActivity()) {
playlistAdapter.submitList(it as PagedList<MediaLibraryItem>)
updateEmptyView()
})
viewModel.provider.loading.observe(requireActivity(), { loading ->
setRefreshing(loading) { }
})
}
viewModel.provider.loading.observe(requireActivity()) { loading ->
setRefreshing(loading) { }
}
viewModel.provider.liveHeaders.observe(requireActivity(), {
viewModel.provider.liveHeaders.observe(requireActivity()) {
playlists.invalidateItemDecorations()
})
}
fastScroller.setRecyclerView(getCurrentRV(), viewModel.provider)

20
application/vlc-android/src/org/videolan/vlc/gui/audio/AudioAlbumsSongsFragment.kt

@ -130,29 +130,29 @@ class AudioAlbumsSongsFragment : BaseAudioBrowser<AlbumSongsViewModel>(), SwipeR
}
fabPlay?.setImageResource(R.drawable.ic_fab_play)
viewModel.albumsProvider.pagedList.observe(requireActivity(), { albums ->
viewModel.albumsProvider.pagedList.observe(requireActivity()) { albums ->
@Suppress("UNCHECKED_CAST")
(albums as? PagedList<MediaLibraryItem>)?.let { albumsAdapter.submitList(it) }
if (viewModel.albumsProvider.loading.value == false && empty && !viewModel.isFiltering()) currentTab = 1
})
viewModel.tracksProvider.pagedList.observe(requireActivity(), { tracks ->
}
viewModel.tracksProvider.pagedList.observe(requireActivity()) { tracks ->
@Suppress("UNCHECKED_CAST")
(tracks as? PagedList<MediaLibraryItem>)?.let { songsAdapter.submitList(it) }
})
}
for (i in 0..1) setupLayoutManager(viewModel.providersInCard[i], lists[i], viewModel.providers[i] as MedialibraryProvider<MediaLibraryItem>, adapters[i], spacing)
viewModel.albumsProvider.loading.observe(requireActivity(), { loading ->
viewModel.albumsProvider.loading.observe(requireActivity()) { loading ->
if (!loading) {
fastScroller.setRecyclerView(getCurrentRV(), viewModel.providers[currentTab])
}
setRefreshing(loading)
})
}
viewModel.albumsProvider.liveHeaders.observe(viewLifecycleOwner, {
viewModel.albumsProvider.liveHeaders.observe(viewLifecycleOwner) {
lists[0].invalidateItemDecorations()
})
viewModel.tracksProvider.liveHeaders.observe(viewLifecycleOwner, {
}
viewModel.tracksProvider.liveHeaders.observe(viewLifecycleOwner) {
lists[1].invalidateItemDecorations()
})
}
}
override fun sortBy(sort: Int) {

16
application/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserFragment.kt

@ -184,7 +184,7 @@ class AudioBrowserFragment : BaseAudioBrowser<AudioBrowserViewModel>() {
private fun setupProvider(index: Int = viewModel.currentTab) {
val provider = viewModel.providers[index.coerceIn(0, viewModel.providers.size - 1)]
if (provider.loading.hasObservers()) return
provider.pagedList.observe(viewLifecycleOwner, { items ->
provider.pagedList.observe(viewLifecycleOwner) { items ->
@Suppress("UNCHECKED_CAST")
if (items != null) adapters.getOrNull(index)?.submitList(items as PagedList<MediaLibraryItem>?)
updateEmptyView()
@ -193,8 +193,8 @@ class AudioBrowserFragment : BaseAudioBrowser<AudioBrowserViewModel>() {
restorePositions.delete(index)
}
setFabPlayShuffleAllVisibility(items.isNotEmpty())
})
provider.loading.observe(viewLifecycleOwner, { loading ->
}
provider.loading.observe(viewLifecycleOwner) { loading ->
if (loading == null || currentTab != index) return@observe
setRefreshing(loading) { refresh ->
if (refresh) updateEmptyView()
@ -203,13 +203,13 @@ class AudioBrowserFragment : BaseAudioBrowser<AudioBrowserViewModel>() {
songs_fast_scroller.setRecyclerView(getCurrentRV(), viewModel.providers[currentTab])
}
}
})
provider.liveHeaders.observe(viewLifecycleOwner, {
}
provider.liveHeaders.observe(viewLifecycleOwner) {
lists[currentTab].invalidateItemDecorations()
})
}
lifecycleScope.launchWhenStarted {
waitForML()
provider.pagedList.observe(viewLifecycleOwner, { items ->
provider.pagedList.observe(viewLifecycleOwner) { items ->
@Suppress("UNCHECKED_CAST")
if (items != null) adapters.getOrNull(index)?.submitList(items as PagedList<MediaLibraryItem>?)
updateEmptyView()
@ -218,7 +218,7 @@ class AudioBrowserFragment : BaseAudioBrowser<AudioBrowserViewModel>() {
restorePositions.delete(index)
}
setFabPlayShuffleAllVisibility(items.isNotEmpty())
})
}
}
}

10
application/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt

@ -152,15 +152,15 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr
binding.networkList.layoutManager = layoutManager
binding.networkList.adapter = adapter
registerSwiperRefreshlayout()
viewModel.dataset.observe(viewLifecycleOwner, { mediaLibraryItems ->
viewModel.dataset.observe(viewLifecycleOwner) { mediaLibraryItems ->
adapter.update(mediaLibraryItems!!)
if (::addPlaylistFolderOnly.isInitialized) addPlaylistFolderOnly.isVisible = adapter.mediaCount > 0
})
viewModel.getDescriptionUpdate().observe(viewLifecycleOwner, { pair -> if (pair != null) adapter.notifyItemChanged(pair.first, pair.second) })
viewModel.loading.observe(viewLifecycleOwner, { loading ->
}
viewModel.getDescriptionUpdate().observe(viewLifecycleOwner) { pair -> if (pair != null) adapter.notifyItemChanged(pair.first, pair.second) }
viewModel.loading.observe(viewLifecycleOwner) { loading ->
swipeRefreshLayout.isRefreshing = loading
updateEmptyView()
})
}
}
open fun registerSwiperRefreshlayout() = swipeRefreshLayout.setOnRefreshListener(this)

8
application/vlc-android/src/org/videolan/vlc/gui/browser/ExtensionBrowser.kt

@ -80,7 +80,7 @@ class ExtensionBrowser : Fragment(), View.OnClickListener, androidx.swiperefresh
override fun onResume() {
super.onResume()
if (mustBeTerminated)
activity!!.supportFragmentManager.beginTransaction().remove(this).commit()
requireActivity().supportFragmentManager.beginTransaction().remove(this).commit()
mustBeTerminated = true
}
@ -89,7 +89,7 @@ class ExtensionBrowser : Fragment(), View.OnClickListener, androidx.swiperefresh
setTitle(mTitle)
updateDisplay()
if (showSettings) {
if (mAddDirectoryFAB == null) mAddDirectoryFAB = activity!!.findViewById(R.id.fab)
if (mAddDirectoryFAB == null) mAddDirectoryFAB = requireActivity().findViewById(R.id.fab)
mAddDirectoryFAB!!.setImageResource(R.drawable.ic_fab_add)
mAddDirectoryFAB!!.show()
mAddDirectoryFAB!!.setOnClickListener(this)
@ -108,13 +108,13 @@ class ExtensionBrowser : Fragment(), View.OnClickListener, androidx.swiperefresh
val activity = activity as AppCompatActivity?
if (activity != null && activity.supportActionBar != null) {
activity.supportActionBar!!.title = title
getActivity()!!.invalidateOptionsMenu()
requireActivity().invalidateOptionsMenu()
}
}
fun goBack() {
val activity = activity
if (activity != null && activity.supportFragmentManager.popBackStackImmediate()) getActivity()!!.finish()
if (activity != null && activity.supportFragmentManager.popBackStackImmediate()) requireActivity().finish()
}
fun doRefresh(title: String, items: List<VLCExtensionItem>) {

22
application/vlc-android/src/org/videolan/vlc/gui/browser/MLStorageBrowserFragment.kt

@ -109,7 +109,7 @@ class MLStorageBrowserFragment : BaseFragment(), IStorageFragmentDelegate by Sto
val storageBrowserAdapter = StorageBrowserAdapter(getBrowserContainer(false))
localEntry.list.adapter = storageBrowserAdapter
localViewModel = getBrowserModel(category = TYPE_STORAGE, url = null, showHiddenFiles = false)
localViewModel.dataset.observe(viewLifecycleOwner, { list ->
localViewModel.dataset.observe(viewLifecycleOwner) { list ->
list?.let {
storageBrowserAdapter.update(it)
localEntry.loading.state = when {
@ -118,14 +118,14 @@ class MLStorageBrowserFragment : BaseFragment(), IStorageFragmentDelegate by Sto
else -> EmptyLoadingState.EMPTY
}
}
})
localViewModel.loading.observe(viewLifecycleOwner, {
}
localViewModel.loading.observe(viewLifecycleOwner) {
if (it) localEntry.loading.state = EmptyLoadingState.LOADING
})
}
localViewModel.browseRoot()
localViewModel.getDescriptionUpdate().observe(viewLifecycleOwner, { pair ->
localViewModel.getDescriptionUpdate().observe(viewLifecycleOwner) { pair ->
if (pair != null) storageBrowserAdapter.notifyItemChanged(pair.first, pair.second)
})
}
networkEntry = view.findViewById(R.id.network_browser_entry)
networkEntry.visibility = if (FeatureFlagManager.isEnabled(requireActivity(), FeatureFlag.NETWORK_INDEXING)) View.VISIBLE else View.GONE
@ -134,18 +134,18 @@ class MLStorageBrowserFragment : BaseFragment(), IStorageFragmentDelegate by Sto
val networkAdapter = StorageBrowserAdapter(getBrowserContainer(true))
networkEntry.list.adapter = networkAdapter
networkViewModel = getBrowserModel(category = TYPE_NETWORK, url = null, showHiddenFiles = false)
networkViewModel.dataset.observe(viewLifecycleOwner, { list ->
list?.let {
networkViewModel.dataset.observe(viewLifecycleOwner) { list ->
list?.let {
val filtered = it.filter { item -> item is MediaWrapper && item.uri?.scheme == "smb" }
networkAdapter.update(filtered)
updateNetworkEmptyView(networkEntry.loading)
if (networkViewModel.loading.value == false) networkEntry.loading.state = if (list.isEmpty()) EmptyLoadingState.EMPTY else EmptyLoadingState.NONE
}
})
networkViewModel.loading.observe(viewLifecycleOwner, {
}
networkViewModel.loading.observe(viewLifecycleOwner) {
if (it) networkEntry.loading.state = EmptyLoadingState.LOADING
updateNetworkEmptyView(networkEntry.loading)
})
}
networkViewModel.browseRoot()
localEntry.displayInCards = false

36
application/vlc-android/src/org/videolan/vlc/gui/browser/MainBrowserFragment.kt

@ -166,7 +166,7 @@ class MainBrowserFragment : BaseFragment(), View.OnClickListener, CtxActionRecei
localEntry.list.adapter = storageBrowserAdapter
localViewModel = getBrowserModel(category = TYPE_FILE, url = null, showHiddenFiles = false)
containerAdapterAssociation[storageBbrowserContainer] = Pair(storageBrowserAdapter, localViewModel)
localViewModel.dataset.observe(viewLifecycleOwner, { list ->
localViewModel.dataset.observe(viewLifecycleOwner) { list ->
list?.let {
if (Permissions.canReadStorage(requireActivity())) storageBrowserAdapter.update(it)
localEntry.loading.state = when {
@ -176,14 +176,14 @@ class MainBrowserFragment : BaseFragment(), View.OnClickListener, CtxActionRecei
else -> EmptyLoadingState.EMPTY
}
}
})
localViewModel.loading.observe(viewLifecycleOwner, {
if (it) localEntry.loading.state = EmptyLoadingState.LOADING else if (!Permissions.canReadStorage(requireActivity()))localEntry.loading.state = EmptyLoadingState.MISSING_PERMISSION
})
}
localViewModel.loading.observe(viewLifecycleOwner) {
if (it) localEntry.loading.state = EmptyLoadingState.LOADING else if (!Permissions.canReadStorage(requireActivity())) localEntry.loading.state = EmptyLoadingState.MISSING_PERMISSION
}
localViewModel.browseRoot()
localViewModel.getDescriptionUpdate().observe(viewLifecycleOwner, { pair ->
localViewModel.getDescriptionUpdate().observe(viewLifecycleOwner) { pair ->
if (pair != null) storageBrowserAdapter.notifyItemChanged(pair.first, pair.second)
})
}
favoritesEntry = view.findViewById(R.id.fav_browser_entry)
favoritesEntry.loading.showNoMedia = false
@ -193,9 +193,9 @@ class MainBrowserFragment : BaseFragment(), View.OnClickListener, CtxActionRecei
favoritesEntry.list.adapter = favoritesAdapter
favoritesViewModel = BrowserFavoritesModel(requireContext())
containerAdapterAssociation[favoritesBrowserContainer] = Pair(favoritesAdapter, favoritesViewModel)
favoritesViewModel.favorites.observe(viewLifecycleOwner, { list ->
favoritesViewModel.favorites.observe(viewLifecycleOwner) { list ->
list.let {
if (list.isEmpty() || !Permissions.canReadStorage(requireActivity())) favoritesEntry.setGone() else favoritesEntry.setVisible()
if (list.isEmpty() || !Permissions.canReadStorage(requireActivity())) favoritesEntry.setGone() else favoritesEntry.setVisible()
favoritesAdapter.update(it)
favoritesEntry.loading.state = when {
list.isNotEmpty() -> EmptyLoadingState.NONE
@ -203,13 +203,13 @@ class MainBrowserFragment : BaseFragment(), View.OnClickListener, CtxActionRecei
else -> EmptyLoadingState.EMPTY
}
}
})
favoritesViewModel.provider.loading.observe(viewLifecycleOwner, {
}
favoritesViewModel.provider.loading.observe(viewLifecycleOwner) {
if (it) localEntry.loading.state = EmptyLoadingState.LOADING
})
favoritesViewModel.provider.descriptionUpdate.observe(viewLifecycleOwner, { pair ->
}
favoritesViewModel.provider.descriptionUpdate.observe(viewLifecycleOwner) { pair ->
if (pair != null) favoritesAdapter.notifyItemChanged(pair.first, pair.second)
})
}
networkEntry = view.findViewById(R.id.network_browser_entry)
networkEntry.loading.showNoMedia = false
@ -219,17 +219,17 @@ class MainBrowserFragment : BaseFragment(), View.OnClickListener, CtxActionRecei
networkEntry.list.adapter = networkAdapter
networkViewModel = getBrowserModel(category = TYPE_NETWORK, url = null, showHiddenFiles = false)
containerAdapterAssociation[networkBrowserContainer] = Pair(networkAdapter, networkViewModel)
networkViewModel.dataset.observe(viewLifecycleOwner, { list ->
networkViewModel.dataset.observe(viewLifecycleOwner) { list ->
list?.let {
networkAdapter.update(it)
updateNetworkEmptyView(networkEntry.loading)
if (networkViewModel.loading.value == false) networkEntry.loading.state = if (list.isEmpty()) EmptyLoadingState.EMPTY else EmptyLoadingState.NONE
}
})
networkViewModel.loading.observe(viewLifecycleOwner, {
}
networkViewModel.loading.observe(viewLifecycleOwner) {
if (it) networkEntry.loading.state = EmptyLoadingState.LOADING
updateNetworkEmptyView(networkEntry.loading)
})
}
networkViewModel.browseRoot()
localEntry.displayInCards = !displayInList

4
application/vlc-android/src/org/videolan/vlc/gui/dialogs/AddToGroupDialog.kt

@ -110,7 +110,7 @@ class AddToGroupDialog : VLCBottomSheetDialogFragment(), SimpleAdapter.ClickHand
binding.list.adapter = adapter
//we have to create the viewmodel that way to avoid the cache from ViewModelProvider which will send the model from the calling activity that may have a different groupingType
val viewModel = VideosViewModel.Factory(requireContext(), VideoGroupingType.NAME, null, null).create(VideosViewModel::class.java)
viewModel.provider.pagedList.observe(viewLifecycleOwner, {
viewModel.provider.pagedList.observe(viewLifecycleOwner) {
adapter.submitList(it.filter { group -> group is VideoGroup && group.mediaCount() > 1 }.apply {
forEach { mediaLibraryItem -> mediaLibraryItem.description = resources.getQuantityString(R.plurals.media_quantity, mediaLibraryItem.tracksCount, mediaLibraryItem.tracksCount) }
@ -120,7 +120,7 @@ class AddToGroupDialog : VLCBottomSheetDialogFragment(), SimpleAdapter.ClickHand
}
})
updateEmptyView()
})
}
updateEmptyView()
}

2
application/vlc-android/src/org/videolan/vlc/gui/dialogs/PickTimeFragment.kt

@ -111,7 +111,7 @@ abstract class PickTimeFragment : VLCBottomSheetDialogFragment(), View.OnClickLi
}
override fun initialFocusedView(): View {
return view!!.findViewById(R.id.tim_pic_1)
return requireView().findViewById(R.id.tim_pic_1)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

4
application/vlc-android/src/org/videolan/vlc/gui/dialogs/RenderersDialog.kt

@ -52,12 +52,12 @@ class RenderersDialog : DialogFragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
RendererDelegate.renderers.observe(this, {
RendererDelegate.renderers.observe(this) {
if (it !== null) {
renderers = it
mAdapter.update(it)
}
})
}
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {

4
application/vlc-android/src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt

@ -116,11 +116,11 @@ class SavePlaylistDialog : VLCBottomSheetDialogFragment(), View.OnClickListener,
filesText = resources.getQuantityString(R.plurals.media_quantity, newTracks.size, newTracks.size)
}
} else {
viewModel.dataset.observe(this, { mediaLibraryItems ->
viewModel.dataset.observe(this) { mediaLibraryItems ->
newTracks = mediaLibraryItems.asSequence().map { it as MediaWrapper }.filter { it.type != MediaWrapper.TYPE_DIR }.toList().toTypedArray()
isLoading = false
filesText = resources.getQuantityString(R.plurals.media_quantity, newTracks.size, newTracks.size)
})
}
}
}
emptyArray()

12
application/vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloaderDialogFragment.kt

@ -164,17 +164,17 @@ class SubtitleDownloaderDialogFragment : VLCBottomSheetDialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel.result.observe(viewLifecycleOwner, {
viewModel.result.observe(viewLifecycleOwner) {
downloadAdapter.setList(it)
if (it.isNotEmpty()) focusOnView(binding.scrollView)
})
viewModel.isApiLoading.observe(viewLifecycleOwner, {
}
viewModel.isApiLoading.observe(viewLifecycleOwner) {
binding.subDownloadLoading.visibility = if (it) View.VISIBLE else View.GONE
})
}
viewModel.history.observe(this, {
viewModel.history.observe(this) {
historyAdapter.setList(it)
})
}
}
override fun onConfigurationChanged(newConfig: Configuration) {

4
application/vlc-android/src/org/videolan/vlc/gui/network/MRLPanelFragment.kt

@ -113,8 +113,8 @@ class MRLPanelFragment : BaseFragment(), View.OnKeyListener, TextView.OnEditorAc
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel.dataset.observe(requireActivity(), { adapter.update(it) })
viewModel.loading.observe(requireActivity(), { (activity as? MainActivity)?.refreshing = it })
viewModel.dataset.observe(requireActivity()) { adapter.update(it) }
viewModel.loading.observe(requireActivity()) { (activity as? MainActivity)?.refreshing = it }
}
override fun onResume() {

2
application/vlc-android/src/org/videolan/vlc/gui/preferences/BasePreferenceFragment.kt

@ -59,7 +59,7 @@ abstract class BasePreferenceFragment : PreferenceFragmentCompat() {
}
protected fun loadFragment(fragment: Fragment) {
activity!!.supportFragmentManager.beginTransaction().replace(R.id.fragment_placeholder, fragment)
requireActivity().supportFragmentManager.beginTransaction().replace(R.id.fragment_placeholder, fragment)
.addToBackStack("main")
.commit()
}

2
application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesExtensionFragment.kt

@ -44,7 +44,7 @@ class PreferencesExtensionFragment : BasePreferenceFragment() {
extensionKey = newBundle.getString("extension_key")
extensionPackageName = extensionKey!!.replace(ExtensionsManager.EXTENSION_PREFIX + "_", "")
extensionId = ExtensionsManager.getInstance().getExtensionId(extensionPackageName)
extension = ExtensionsManager.getInstance().getExtensions(activity!!.application, false)[extensionId]
extension = ExtensionsManager.getInstance().getExtensions(requireActivity().application, false)[extensionId]
extensionTitle = extension!!.title()
setTitle(extensionTitle)
androidAutoAvailable = ExtensionsManager.androidAutoInstalled && extension!!.androidAutoEnabled()

8
application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceSearchActivity.kt

@ -60,13 +60,13 @@ class PreferenceSearchActivity : BaseActivity(), TextWatcher, PreferenceItemAdap
}
viewmodel = ViewModelProvider(this, PreferenceSearchModel.Factory(this)).get(PreferenceSearchModel::class.java)
binding.searchText.addTextChangedListener(this)
viewmodel.filtered.observe(this, {
viewmodel.filtered.observe(this) {
adapter.submitList(it)
})
viewmodel.showTranslations.observe(this, {
}
viewmodel.showTranslations.observe(this) {
adapter.showTranslation = it
binding.translateButton.isSelected = it
})
}
adapter = PreferenceItemAdapter(this)
binding.list.adapter = adapter
binding.list.layoutManager = LinearLayoutManager(this)

8
application/vlc-android/src/org/videolan/vlc/gui/video/VideoGridFragment.kt

@ -125,24 +125,24 @@ class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshL
private fun setDataObservers() {
videoListAdapter.dataType = viewModel.groupingType
viewModel.provider.loading.observe(this@VideoGridFragment, { loading ->
viewModel.provider.loading.observe(this@VideoGridFragment) { loading ->
setRefreshing(loading) { refresh ->
if (!refresh) {
menu?.let { UiTools.updateSortTitles(it, viewModel.provider) }
restoreMultiSelectHelper()
}
}
})
}
videoListAdapter.showFilename.set(viewModel.groupingType == VideoGroupingType.NONE && viewModel.provider.sort == Medialibrary.SORT_FILENAME)
lifecycleScope.launch {
waitForML()
viewModel.provider.pagedList.observe(requireActivity(), {
viewModel.provider.pagedList.observe(requireActivity()) {
(it as? PagedList<MediaLibraryItem>)?.let { videoListAdapter.submitList(it) }
updateEmptyView()
restoreMultiSelectHelper()
if (activity?.isFinishing == false && viewModel.group != null && it.size < 2) requireActivity().finish()
setFabPlayVisibility(true)
})
}
}
}

20
application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerOverlayDelegate.kt

@ -385,15 +385,15 @@ class VideoPlayerOverlayDelegate (private val player: VideoPlayerActivity) {
hudBinding.player = player
hudBinding.progress = service.playlistManager.player.progress
abRepeatAddMarker = hudBinding.abRepeatContainer.findViewById(R.id.ab_repeat_add_marker)
service.playlistManager.abRepeat.observe(player, { abvalues ->
service.playlistManager.abRepeat.observe(player) { abvalues ->
hudBinding.abRepeatA = if (abvalues.start == -1L) -1F else abvalues.start / service.playlistManager.player.getLength().toFloat()
hudBinding.abRepeatB = if (abvalues.stop == -1L) -1F else abvalues.stop / service.playlistManager.player.getLength().toFloat()
hudBinding.abRepeatMarkerA.visibility = if (abvalues.start == -1L) View.GONE else View.VISIBLE
hudBinding.abRepeatMarkerB.visibility = if (abvalues.stop == -1L) View.GONE else View.VISIBLE
service.manageAbRepeatStep(hudBinding.abRepeatReset, hudBinding.abRepeatStop, hudBinding.abRepeatContainer, abRepeatAddMarker)
if (player.settings.getBoolean(VIDEO_TRANSITION_SHOW, true)) showOverlayTimeout(if (abvalues.start == -1L || abvalues.stop == -1L) VideoPlayerActivity.OVERLAY_INFINITE else Settings.videoHudDelay * 1000)
})
service.playlistManager.abRepeatOn.observe(player, {
}
service.playlistManager.abRepeatOn.observe(player) {
abRepeatAddMarker.visibility = if (it) View.VISIBLE else View.GONE
hudBinding.abRepeatMarkerGuidelineContainer.visibility = if (it) View.VISIBLE else View.GONE
if (it) showOverlay(true)
@ -404,16 +404,16 @@ class VideoPlayerOverlayDelegate (private val player: VideoPlayerActivity) {
if (it) showOverlayTimeout(VideoPlayerActivity.OVERLAY_INFINITE)
service.manageAbRepeatStep(hudBinding.abRepeatReset, hudBinding.abRepeatStop, hudBinding.abRepeatContainer, abRepeatAddMarker)
})
service.playlistManager.delayValue.observe(player, {
}
service.playlistManager.delayValue.observe(player) {
player.delayDelegate.delayChanged(it, service)
})
service.playlistManager.videoStatsOn.observe(player, {
}
service.playlistManager.videoStatsOn.observe(player) {
if (it) showOverlay(true)
player.statsDelegate.container = hudBinding.statsContainer
player.statsDelegate.initPlotView(hudBinding)
if (it) player.statsDelegate.start() else player.statsDelegate.stop()
})
}
hudBinding.statsClose.setOnClickListener { service.playlistManager.videoStatsOn.postValue(false) }
hudBinding.lifecycleOwner = player
@ -421,8 +421,8 @@ class VideoPlayerOverlayDelegate (private val player: VideoPlayerActivity) {
overlayBackground = player.findViewById(R.id.player_overlay_background)
if (!AndroidDevices.isChromeBook && !player.isTv
&& player.settings.getBoolean("enable_casting", true)) {
PlaybackService.renderer.observe(player, { rendererItem -> hudRightBinding.videoRenderer.setImageDrawable(AppCompatResources.getDrawable(player, if (rendererItem == null) R.drawable.ic_player_renderer else R.drawable.ic_player_renderer_on)) })
RendererDelegate.renderers.observe(player, { rendererItems -> updateRendererVisibility() })
PlaybackService.renderer.observe(player) { rendererItem -> hudRightBinding.videoRenderer.setImageDrawable(AppCompatResources.getDrawable(player, if (rendererItem == null) R.drawable.ic_player_renderer else R.drawable.ic_player_renderer_on)) }
RendererDelegate.renderers.observe(player) { rendererItems -> updateRendererVisibility() }
}
hudRightBinding.playerOverlayTitle.text = service.currentMediaWrapper?.title

2
application/vlc-android/src/org/videolan/vlc/media/MediaSessionBrowser.kt

@ -629,7 +629,7 @@ class MediaSessionBrowser : ExtensionManagerActivity {
}
}
iconUri.appendPath("${libraryItem.id}")
artworkToUriCache.getOrPut(libraryItem.artworkMrl, { ArtworkProvider.buildUri(iconUri.build()) })
artworkToUriCache.getOrPut(libraryItem.artworkMrl) { ArtworkProvider.buildUri(iconUri.build()) }
} else if (libraryItem.itemType == MediaLibraryItem.TYPE_MEDIA && (libraryItem as MediaWrapper).type == MediaWrapper.TYPE_STREAM)
DEFAULT_STREAM_ICON
else {

6
application/vlc-android/src/org/videolan/vlc/util/DialogDelegates.kt

@ -26,12 +26,12 @@ interface IDialogManager {
class DialogDelegate : IDialogDelegate {
override fun observeDialogs(lco: LifecycleOwner, manager: IDialogManager) {
dialogEvt.observe(lco, {
when(it) {
dialogEvt.observe(lco) {
when (it) {
is Show -> manager.fireDialog(it.dialog)
is Cancel -> manager.dialogCanceled(it.dialog)
}
})
}
}
companion object DialogsListener : Dialog.Callbacks {

Loading…
Cancel
Save