Browse Source

Normalize snackbars positioning

(cherry picked from commit de54855233)
3.3.x
Nicolas Pomepuy 5 years ago
parent
commit
fef83c69fb
  1. 1
      application/moviepedia/src/main/java/org/videolan/moviepedia/ui/MediaScrapingActivity.kt
  2. 5
      application/vlc-android/src/org/videolan/vlc/gui/AudioPlayerContainerActivity.kt
  3. 1
      application/vlc-android/src/org/videolan/vlc/gui/BaseActivity.kt
  4. 3
      application/vlc-android/src/org/videolan/vlc/gui/ContentActivity.kt
  5. 2
      application/vlc-android/src/org/videolan/vlc/gui/DebugLogActivity.kt
  6. 2
      application/vlc-android/src/org/videolan/vlc/gui/DialogActivity.kt
  7. 10
      application/vlc-android/src/org/videolan/vlc/gui/PlaylistActivity.kt
  8. 1
      application/vlc-android/src/org/videolan/vlc/gui/SearchActivity.kt
  9. 8
      application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt
  10. 4
      application/vlc-android/src/org/videolan/vlc/gui/audio/EqualizerFragment.kt
  11. 2
      application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt
  12. 2
      application/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt
  13. 10
      application/vlc-android/src/org/videolan/vlc/gui/browser/MediaBrowserFragment.kt
  14. 2
      application/vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserFragment.kt
  15. 2
      application/vlc-android/src/org/videolan/vlc/gui/dialogs/RenderersDialog.kt
  16. 2
      application/vlc-android/src/org/videolan/vlc/gui/helpers/AudioUtil.kt
  17. 18
      application/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt
  18. 2
      application/vlc-android/src/org/videolan/vlc/gui/network/StreamsFragmentDelegate.kt
  19. 1
      application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesActivity.kt
  20. 6
      application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAdvanced.kt
  21. 2
      application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesFragment.kt
  22. 2
      application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerOverlayDelegate.kt

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

@ -52,6 +52,7 @@ open class MediaScrapingActivity : BaseActivity(), TextWatcher, TextView.OnEdito
private lateinit var media: MediaWrapper
private lateinit var binding: MoviepediaActivityBinding
private val clickHandler = ClickHandler()
override fun getSnackAnchorView(): View? = findViewById(android.R.id.content)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

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

@ -108,6 +108,11 @@ open class AudioPlayerContainerActivity : BaseActivity() {
val isAudioPlayerExpanded: Boolean
get() = isAudioPlayerReady && playerBehavior.state == STATE_EXPANDED
override fun getSnackAnchorView(): View? {
return if (::audioPlayerContainer.isInitialized && audioPlayerContainer.visibility != View.GONE && playerBehavior.state == STATE_COLLAPSED)
audioPlayerContainer else if (playerBehavior.state == STATE_EXPANDED) findViewById(android.R.id.content) else findViewById(R.id.coordinator) ?: findViewById(android.R.id.content)
}
override fun onCreate(savedInstanceState: Bundle?) {
//Init Medialibrary if KO
if (savedInstanceState != null) {

1
application/vlc-android/src/org/videolan/vlc/gui/BaseActivity.kt

@ -22,6 +22,7 @@ abstract class BaseActivity : AppCompatActivity() {
lateinit var settings: SharedPreferences
open val displayTitle = false
abstract fun getSnackAnchorView(): View?
override fun onCreate(savedInstanceState: Bundle?) {
settings = Settings.getInstance(this)

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

@ -118,8 +118,7 @@ open class ContentActivity : AudioPlayerContainerActivity(), SearchView.OnQueryT
if (!PlaybackService.hasRenderer() && RendererDelegate.renderers.size == 1) {
val renderer = RendererDelegate.renderers.value[0]
PlaybackService.renderer.value = renderer
val v = findViewById<View>(R.id.audio_player_container)
if (v != null) UiTools.snacker(v, getString(R.string.casting_connected_renderer, renderer.displayName))
UiTools.snacker(this, getString(R.string.casting_connected_renderer, renderer.displayName))
} else if (supportFragmentManager.findFragmentByTag("renderers") == null)
RenderersDialog().show(supportFragmentManager, "renderers")
return true

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

@ -81,7 +81,7 @@ class DebugLogActivity : FragmentActivity(), DebugLogService.Client.Callback {
val clipboard = applicationContext.getSystemService<ClipboardManager>()!!
clipboard.setPrimaryClip(ClipData.newPlainText(null, buffer))
UiTools.snacker(v.rootView, R.string.copied_to_clipboard)
UiTools.snacker(this, R.string.copied_to_clipboard)
}
override fun onCreate(savedInstanceState: Bundle?) {

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

@ -24,6 +24,7 @@
package org.videolan.vlc.gui
import android.os.Bundle
import android.view.View
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.ObsoleteCoroutinesApi
import org.videolan.libvlc.Dialog
@ -36,6 +37,7 @@ import org.videolan.vlc.util.showVlcDialog
@ExperimentalCoroutinesApi
class DialogActivity : BaseActivity() {
override fun getSnackAnchorView(): View? = findViewById<View>(android.R.id.content)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

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

@ -397,15 +397,15 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler<Med
private fun removeItem(position: Int, media: MediaWrapper) {
val resId = if (isPlaylist) R.string.confirm_remove_from_playlist else R.string.confirm_delete
if (isPlaylist) {
snackerConfirm(binding.root, getString(resId, media.title), Runnable { (viewModel.playlist as Playlist).remove(position) })
snackerConfirm(this, getString(resId, media.title), Runnable { (viewModel.playlist as Playlist).remove(position) })
} else {
val deleteAction = Runnable { deleteMedia(media) }
snackerConfirm(binding.root, getString(resId, media.title), Runnable { if (Permissions.checkWritePermission(this@PlaylistActivity, media, deleteAction)) deleteAction.run() })
snackerConfirm(this, getString(resId, media.title), Runnable { if (Permissions.checkWritePermission(this@PlaylistActivity, media, deleteAction)) deleteAction.run() })
}
}
private fun removeItems(items: List<MediaWrapper>) {
lifecycleScope.snackerConfirm(binding.root,getString(R.string.confirm_delete_several_media, items.size)) {
lifecycleScope.snackerConfirm(this, getString(R.string.confirm_delete_several_media, items.size)) {
for (item in items) {
if (!isStarted()) break
if (getWritePermission(item.uri)) deleteMedia(item)
@ -422,7 +422,7 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler<Med
if (parentPath != null && FileUtils.deleteFile(path) && media.id > 0L && !foldersToReload.contains(parentPath)) {
foldersToReload.add(parentPath)
} else
UiTools.snacker(binding.root, getString(R.string.msg_delete_failed, media.title))
UiTools.snacker(this@PlaylistActivity, getString(R.string.msg_delete_failed, media.title))
}
for (folder in foldersToReload) mediaLibrary.reload(folder)
}
@ -451,7 +451,7 @@ open class PlaylistActivity : AudioPlayerContainerActivity(), IEventsHandler<Med
playlist.remove(playlistIndex - index)
}
}
UiTools.snackerWithCancel(findViewById(android.R.id.content), getString(R.string.removed_from_playlist_anonymous), null, {
UiTools.snackerWithCancel(this@PlaylistActivity, getString(R.string.removed_from_playlist_anonymous), null, {
for ((key, value) in itemsRemoved) {
playlist.add(value, key)
}

1
application/vlc-android/src/org/videolan/vlc/gui/SearchActivity.kt

@ -29,6 +29,7 @@ open class SearchActivity : BaseActivity(), TextWatcher, TextView.OnEditorAction
private lateinit var medialibrary: Medialibrary
private lateinit var binding: SearchActivityBinding
private val clickHandler = ClickHandler()
override fun getSnackAnchorView(): View? = findViewById(android.R.id.content)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

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

@ -204,7 +204,7 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, IAudioPlay
val mw = playlistAdapter.getItem(position)
val cancelAction = Runnable { playlistModel.insertMedia(position, mw) }
val message = String.format(getString(R.string.remove_playlist_item), mw.title)
UiTools.snackerWithCancel((it.context as Activity).findViewById(android.R.id.content), message, null, cancelAction)
UiTools.snackerWithCancel(requireActivity(), message, null, cancelAction)
playlistModel.remove(position)
}
CTX_STOP_AFTER_THIS -> playlistModel.stopAfter(position)
@ -349,11 +349,11 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, IAudioPlay
}
fun onNextClick(view: View) {
if (!playlistModel.next()) activity?.window?.decorView?.let { UiTools.snacker(it, R.string.lastsong) }
if (!playlistModel.next()) UiTools.snacker(requireActivity(), R.string.lastsong)
}
fun onPreviousClick(view: View) {
if (!playlistModel.previous()) activity?.window?.decorView?.let { UiTools.snacker(it, R.string.firstsong) }
if (!playlistModel.previous()) UiTools.snacker(requireActivity(), R.string.firstsong)
}
fun onRepeatClick(view: View) {
@ -580,7 +580,7 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, IAudioPlay
val trackInfo = playlistModel.title ?: return
requireActivity().copy("VLC - song name", trackInfo)
activity?.window?.decorView?.let { UiTools.snacker(it, R.string.track_info_copied_to_clipboard) }
UiTools.snacker(requireActivity(), R.string.track_info_copied_to_clipboard)
}
override fun onTouchDown() {}

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

@ -411,7 +411,7 @@ class EqualizerFragment : VLCBottomSheetDialogFragment() {
state.update(0, true)
binding.equalizerPresets.setSelection(0)
val message = getString(org.videolan.vlc.R.string.custom_set_deleted_message, oldName)
UiTools.snackerWithCancel(binding.root, message, null, cancelAction)
UiTools.snackerWithCancel(requireActivity(), message, null, cancelAction)
}
}
@ -442,7 +442,7 @@ class EqualizerFragment : VLCBottomSheetDialogFragment() {
getString(org.videolan.vlc.R.string.custom_set_restored)
else
getString(org.videolan.vlc.R.string.unsaved_set_deleted_message)
UiTools.snackerWithCancel(binding.root, message, null, cancelAction)
UiTools.snackerWithCancel(requireActivity(), message, null, cancelAction)
}
private fun updateEqualizer(pos: Int) = lifecycleScope.launch(start = CoroutineStart.UNDISPATCHED) {

2
application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt

@ -178,7 +178,7 @@ class PlaylistAdapter(private val player: IPlayer) : DiffUtilAdapter<MediaWrappe
val message = String.format(AppContextProvider.appResources.getString(R.string.remove_playlist_item), media.title)
if (player is Fragment) {
val cancelAction = Runnable { model?.run { insertMedia(position, media) } }
UiTools.snackerWithCancel(player.requireActivity().findViewById(android.R.id.content), message, null, cancelAction)
UiTools.snackerWithCancel(player.requireActivity(), message, null, cancelAction)
} else if (player is Context) {
Toast.makeText(AppContextProvider.appContext, message, Toast.LENGTH_SHORT).show()
}

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

@ -342,7 +342,7 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr
}
}
val resId = if (mw.type == MediaWrapper.TYPE_DIR) R.string.confirm_delete_folder else R.string.confirm_delete
UiTools.snackerConfirm(view, getString(resId, mw.title), Runnable { if (Permissions.checkWritePermission(requireActivity(), mw, deleteAction)) deleteAction.run() })
UiTools.snackerConfirm(requireActivity(), getString(resId, mw.title), Runnable { if (Permissions.checkWritePermission(requireActivity(), mw, deleteAction)) deleteAction.run() })
return true
}

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

@ -127,7 +127,7 @@ abstract class MediaBrowserFragment<T : SortableModel> : BaseFragment(), Filtera
return
}
val v = view ?: return
lifecycleScope.snackerConfirm(v,getString(R.string.confirm_delete_several_media, items.size)) {
lifecycleScope.snackerConfirm(requireActivity(), getString(R.string.confirm_delete_several_media, items.size)) {
for (item in items) {
if (!isStarted()) break
when(item) {
@ -142,7 +142,7 @@ abstract class MediaBrowserFragment<T : SortableModel> : BaseFragment(), Filtera
protected open fun removeItem(item: MediaLibraryItem): Boolean {
val view = view ?: return false
when (item) {
is Playlist -> lifecycleScope.snackerConfirm(view, getString(R.string.confirm_delete_playlist, item.title)) { MediaUtils.deletePlaylist(item) }
is Playlist -> lifecycleScope.snackerConfirm(requireActivity(), getString(R.string.confirm_delete_playlist, item.title)) { MediaUtils.deletePlaylist(item) }
is MediaWrapper-> {
val deleteAction = Runnable {
if (isStarted()) lifecycleScope.launch {
@ -150,7 +150,7 @@ abstract class MediaBrowserFragment<T : SortableModel> : BaseFragment(), Filtera
}
}
val resid = if (item.type == MediaWrapper.TYPE_DIR) R.string.confirm_delete_folder else R.string.confirm_delete
lifecycleScope.snackerConfirm(view, getString(resid, item.getTitle())) { if (Permissions.checkWritePermission(requireActivity(), item, deleteAction)) deleteAction.run() }
lifecycleScope.snackerConfirm(requireActivity(), getString(resid, item.getTitle())) { if (Permissions.checkWritePermission(requireActivity(), item, deleteAction)) deleteAction.run() }
}
is Album -> {
val deleteAction = Runnable {
@ -159,7 +159,7 @@ abstract class MediaBrowserFragment<T : SortableModel> : BaseFragment(), Filtera
}
}
val resid = R.string.confirm_delete_album
lifecycleScope.snackerConfirm(view, getString(resid, item.getTitle())) { if (item.tracks.any { Permissions.checkWritePermission(requireActivity(), it, deleteAction) }) deleteAction.run() }
lifecycleScope.snackerConfirm(requireActivity(), getString(resid, item.getTitle())) { if (item.tracks.any { Permissions.checkWritePermission(requireActivity(), it, deleteAction) }) deleteAction.run() }
}
else -> return false
}
@ -167,7 +167,7 @@ abstract class MediaBrowserFragment<T : SortableModel> : BaseFragment(), Filtera
}
private fun onDeleteFailed(item: MediaLibraryItem) {
if (isAdded) view?.let { UiTools.snacker(it, getString(R.string.msg_delete_failed, item.title)) }
if (isAdded) UiTools.snacker(requireActivity(), getString(R.string.msg_delete_failed, item.title))
}
override fun onPrepareOptionsMenu(menu: Menu) {

2
application/vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserFragment.kt

@ -257,7 +257,7 @@ class StorageBrowserFragment : FileBrowserFragment(), EntryPointsEventsCb, Brows
val path = input.text.toString().trim { it <= ' ' }
val f = File(path)
if (!f.exists() || !f.isDirectory) {
UiTools.snacker(view!!, getString(R.string.directorynotfound, path))
UiTools.snacker(requireActivity(), getString(R.string.directorynotfound, path))
return@OnClickListener
}

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

@ -109,7 +109,7 @@ class RenderersDialog : DialogFragment() {
dismissAllowingStateLoss()
item?.run {
activity?.window?.findViewById<View>(R.id.audio_player_container)?.let {
UiTools.snacker(it, getString(R.string.casting_connected_renderer, displayName))
UiTools.snacker(requireActivity(), getString(R.string.casting_connected_renderer, displayName))
}
}
}

2
application/vlc-android/src/org/videolan/vlc/gui/helpers/AudioUtil.kt

@ -64,7 +64,7 @@ object AudioUtil {
return
}
val view = window.decorView.findViewById(R.id.coordinator) ?: window.decorView
lifecycleScope.snackerConfirm(view, getString(R.string.set_song_question, song.title)) {
lifecycleScope.snackerConfirm(this, getString(R.string.set_song_question, song.title)) {
val newRingtone = AndroidUtil.UriToFile(song.uri)
if (!withContext(Dispatchers.IO) { newRingtone.exists() }) {
Toast.makeText(applicationContext, getString(R.string.ringtone_error), Toast.LENGTH_SHORT).show()

18
application/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt

@ -216,10 +216,14 @@ object UiTools {
return DEFAULT_COVER_FOLDER_DRAWABLE_BIG!!
}
private fun getSnackAnchorView(activity: Activity)=
if (activity is BaseActivity && activity.getSnackAnchorView() != null) activity.getSnackAnchorView() else activity.findViewById(android.R.id.content)
/**
* Print an on-screen message to alert the user
*/
fun snacker(view: View, stringId: Int) {
fun snacker(activity:Activity, stringId: Int) {
val view = getSnackAnchorView(activity) ?: return
val snack = Snackbar.make(view, stringId, Snackbar.LENGTH_SHORT)
// snack.setAnchorView()
snack.show()
@ -229,7 +233,8 @@ object UiTools {
* Print an on-screen message to alert the user
*/
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
fun snacker(view: View, message: String) {
fun snacker(activity:Activity, message: String) {
val view = getSnackAnchorView(activity) ?: return
val snack = Snackbar.make(view, message, Snackbar.LENGTH_SHORT)
if (AndroidUtil.isLolliPopOrLater)
snack.view.elevation = view.resources.getDimensionPixelSize(R.dimen.audio_player_elevation).toFloat()
@ -240,7 +245,8 @@ object UiTools {
* Print an on-screen message to alert the user, with undo action
*/
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
fun snackerConfirm(view: View, message: String, action: Runnable) {
fun snackerConfirm(activity:Activity, message: String, action: Runnable) {
val view = getSnackAnchorView(activity) ?: return
val snack = Snackbar.make(view, message, Snackbar.LENGTH_LONG)
.setAction(R.string.ok) { action.run() }
if (AndroidUtil.isLolliPopOrLater)
@ -249,7 +255,8 @@ object UiTools {
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
fun CoroutineScope.snackerConfirm(view: View, message: String, action: suspend() -> Unit) {
fun CoroutineScope.snackerConfirm(activity:Activity, message: String, action: suspend() -> Unit) {
val view = getSnackAnchorView(activity) ?: return
val snack = Snackbar.make(view, message, Snackbar.LENGTH_LONG)
.setAction(R.string.ok) { launch { action.invoke() } }
if (AndroidUtil.isLolliPopOrLater)
@ -262,7 +269,8 @@ object UiTools {
* Print an on-screen message to alert the user, with undo action
*/
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
fun snackerWithCancel(view: View, message: String, action: Runnable?, cancelAction: Runnable?) {
fun snackerWithCancel(activity:Activity, message: String, action: Runnable?, cancelAction: Runnable?) {
val view = getSnackAnchorView(activity) ?: return
@SuppressLint("WrongConstant") val snack = Snackbar.make(view, message, DELETE_DURATION)
.setAction(R.string.cancel) {
if (action != null)

2
application/vlc-android/src/org/videolan/vlc/gui/network/StreamsFragmentDelegate.kt

@ -73,7 +73,7 @@ class StreamsFragmentDelegate : IStreamsFragmentDelegate, CtxActionReceiver {
CTX_DELETE -> {
val media = viewModel.dataset.get(position)
viewModel.deletingMedia = media
UiTools.snackerWithCancel(fragment.requireView(), fragment.requireActivity().getString(R.string.stream_deleted), Runnable { viewModel.delete() }, Runnable {
UiTools.snackerWithCancel(fragment.requireActivity(), fragment.requireActivity().getString(R.string.stream_deleted), { viewModel.delete() }, {
viewModel.deletingMedia = null
viewModel.refresh()
})

1
application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesActivity.kt

@ -41,6 +41,7 @@ class PreferencesActivity : BaseActivity() {
private var mAppBarLayout: AppBarLayout? = null
override val displayTitle = true
override fun getSnackAnchorView(): View? = findViewById(android.R.id.content)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

6
application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAdvanced.kt

@ -117,7 +117,7 @@ class PreferencesAdvanced : BasePreferenceFragment(), SharedPreferences.OnShared
}
"dump_media_db" -> {
if (Medialibrary.getInstance().isWorking)
view?.let { UiTools.snacker(it, getString(R.string.settings_ml_block_scan)) }
UiTools.snacker(requireActivity(), getString(R.string.settings_ml_block_scan))
else {
val dst = File(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY + Medialibrary.VLC_MEDIA_DB_NAME)
lifecycleScope.launch {
@ -147,7 +147,7 @@ class PreferencesAdvanced : BasePreferenceFragment(), SharedPreferences.OnShared
putInt("network_caching_value", 0)
val networkCachingPref = findPreference<EditTextPreference>(key)
networkCachingPref?.text = ""
UiTools.snacker(requireView(), R.string.network_caching_popup)
UiTools.snacker(requireActivity(), R.string.network_caching_popup)
}
}
restartLibVLC()
@ -157,7 +157,7 @@ class PreferencesAdvanced : BasePreferenceFragment(), SharedPreferences.OnShared
try {
VLCInstance.restart()
} catch (e: IllegalStateException){
view?.let { UiTools.snacker(it, R.string.custom_libvlc_options_invalid) }
UiTools.snacker(requireActivity(), R.string.custom_libvlc_options_invalid)
sharedPreferences.putSingle("custom_libvlc_options", "")
} finally {
(activity as? PreferencesActivity)?.restartMediaPlayer()

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

@ -69,7 +69,7 @@ class PreferencesFragment : BasePreferenceFragment(), SharedPreferences.OnShared
when (preference.key) {
"directories" -> {
when {
Medialibrary.getInstance().isWorking -> UiTools.snacker(view!!, getString(R.string.settings_ml_block_scan))
Medialibrary.getInstance().isWorking -> UiTools.snacker(requireActivity(), getString(R.string.settings_ml_block_scan))
Permissions.canReadStorage(requireContext()) -> {
val activity = requireActivity()
val intent = Intent(activity.applicationContext, SecondaryActivity::class.java)

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

@ -370,7 +370,7 @@ class VideoPlayerOverlayDelegate (private val player: VideoPlayerActivity) {
it.setVisible()
hudRightBinding = DataBindingUtil.bind(player.findViewById(R.id.hud_right_overlay)) ?: return
if (!player.isBenchmark && player.enableCloneMode && !player.settings.contains("enable_clone_mode")) {
UiTools.snackerConfirm(hudRightBinding.videoSecondaryDisplay, player.getString(R.string.video_save_clone_mode), Runnable { player.settings.putSingle("enable_clone_mode", true) })
UiTools.snackerConfirm(player, player.getString(R.string.video_save_clone_mode)) { player.settings.putSingle("enable_clone_mode", true) }
}
}

Loading…
Cancel
Save