Browse Source

Implement the default playback action for files

Fixes #2142
merge-requests/2174/head
Nicolas Pomepuy 1 year ago
parent
commit
4d0a8e947c
  1. 44
      application/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt

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

@ -83,8 +83,6 @@ import org.videolan.tools.BROWSER_SHOW_HIDDEN_FILES
import org.videolan.tools.BROWSER_SHOW_ONLY_MULTIMEDIA
import org.videolan.tools.KeyHelper
import org.videolan.tools.MultiSelectHelper
import org.videolan.tools.PLAYLIST_MODE_AUDIO
import org.videolan.tools.PLAYLIST_MODE_VIDEO
import org.videolan.tools.Settings
import org.videolan.tools.dp
import org.videolan.tools.isStarted
@ -102,6 +100,7 @@ import org.videolan.vlc.gui.dialogs.CONFIRM_RENAME_DIALOG_RESULT
import org.videolan.vlc.gui.dialogs.CURRENT_SORT
import org.videolan.vlc.gui.dialogs.ConfirmDeleteDialog
import org.videolan.vlc.gui.dialogs.CtxActionReceiver
import org.videolan.vlc.gui.dialogs.DEFAULT_ACTIONS
import org.videolan.vlc.gui.dialogs.DISPLAY_IN_CARDS
import org.videolan.vlc.gui.dialogs.DisplaySettingsDialog
import org.videolan.vlc.gui.dialogs.RENAME_DIALOG_MEDIA
@ -111,6 +110,8 @@ import org.videolan.vlc.gui.dialogs.SHOW_HIDDEN_FILES
import org.videolan.vlc.gui.dialogs.SHOW_ONLY_MULTIMEDIA_FILES
import org.videolan.vlc.gui.dialogs.SavePlaylistDialog
import org.videolan.vlc.gui.dialogs.showContext
import org.videolan.vlc.gui.helpers.DefaultPlaybackAction
import org.videolan.vlc.gui.helpers.DefaultPlaybackActionMediaType
import org.videolan.vlc.gui.helpers.MedialibraryUtils
import org.videolan.vlc.gui.helpers.UiTools
import org.videolan.vlc.gui.helpers.UiTools.addToPlaylist
@ -351,6 +352,9 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr
Settings.getInstance(requireActivity()).putSingle(BROWSER_SHOW_ONLY_MULTIMEDIA, (value as Boolean))
viewModel.updateShowAllFiles(value)
}
DEFAULT_ACTIONS -> {
Settings.getInstance(requireActivity()).putSingle(DefaultPlaybackActionMediaType.FILE.defaultActionKey, (value as DefaultPlaybackAction).name)
}
}
}
@ -662,15 +666,17 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr
//Open the display settings Bottom sheet
DisplaySettingsDialog.newInstance(
displayInCards = inCards,
onlyFavs = null,
sorts = sorts,
currentSort = viewModel.provider.sort.takeIf { it != 0 } ?: Medialibrary.SORT_FILENAME,
currentSortDesc = viewModel.provider.desc,
showOnlyMultimediaFiles = settings.getBoolean(BROWSER_SHOW_ONLY_MULTIMEDIA, false),
showHiddenFiles = settings.getBoolean(BROWSER_SHOW_HIDDEN_FILES, true)
displayInCards = inCards,
onlyFavs = null,
sorts = sorts,
currentSort = viewModel.provider.sort.takeIf { it != 0 } ?: Medialibrary.SORT_FILENAME,
currentSortDesc = viewModel.provider.desc,
showOnlyMultimediaFiles = settings.getBoolean(BROWSER_SHOW_ONLY_MULTIMEDIA, false),
showHiddenFiles = settings.getBoolean(BROWSER_SHOW_HIDDEN_FILES, true),
defaultPlaybackActions = DefaultPlaybackActionMediaType.FILE.getDefaultPlaybackActions(settings),
defaultActionType = getString(R.string.files)
)
.show(requireActivity().supportFragmentManager, "DisplaySettingsDialog")
.show(requireActivity().supportFragmentManager, "DisplaySettingsDialog")
true
}
@ -733,16 +739,16 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr
mediaWrapper.removeFlags(MediaWrapper.MEDIA_FORCE_AUDIO)
if (mediaWrapper.type == MediaWrapper.TYPE_DIR) browse(mediaWrapper, true)
else {
val forcePlayType = if (mediaWrapper.type == MediaWrapper.TYPE_AUDIO) PLAYLIST_MODE_AUDIO else PLAYLIST_MODE_VIDEO
if (!Settings.getInstance(requireContext()).getBoolean(forcePlayType, forcePlayType == PLAYLIST_MODE_VIDEO && Settings.tvUI)) {
lifecycleScope.launch {
MediaUtils.openMedia(requireContext(), getMediaWithMeta(item))
}
} else {
lifecycleScope.launch {
val media = viewModel.dataset.getList().filter { it.itemType != MediaWrapper.TYPE_DIR }
lifecycleScope.launch {
when (DefaultPlaybackActionMediaType.FILE.getCurrentPlaybackAction(Settings.getInstance(requireActivity()))) {
DefaultPlaybackAction.PLAY -> MediaUtils.openMedia(requireContext(), getMediaWithMeta(item))
DefaultPlaybackAction.ADD_TO_QUEUE -> MediaUtils.appendMedia(activity, item)
DefaultPlaybackAction.INSERT_NEXT -> MediaUtils.insertNext(activity, item)
else -> {
val media = viewModel.dataset.getList().filter { it.itemType != MediaWrapper.TYPE_DIR }
.map { getMediaWithMeta(it as MediaWrapper) }
MediaUtils.openList(v.context, media, position)
MediaUtils.openList(v.context, media, position)
}
}
}
}

Loading…
Cancel
Save