Browse Source

Fix Play / Play all ctx actions on videos and groups

Fixes #1537
pipelines/135724
Nicolas Pomepuy 5 years ago
parent
commit
2d80384984
  1. 2
      application/resources/src/main/java/org/videolan/resources/Constants.kt
  2. 8
      application/vlc-android/src/org/videolan/vlc/gui/video/VideoGridFragment.kt
  3. 4
      application/vlc-android/src/org/videolan/vlc/viewmodels/mobile/VideosViewModel.kt

2
application/resources/src/main/java/org/videolan/resources/Constants.kt

@ -209,7 +209,7 @@ const val CTX_GROUP_SIMILAR = 1L shl 35
const val CTX_MARK_AS_PLAYED = 1L shl 36
const val CTX_MARK_ALL_AS_PLAYED = 1L shl 37
const val CTX_VIDEO_FLAGS = CTX_APPEND or CTX_PLAY_NEXT or CTX_DELETE or CTX_DOWNLOAD_SUBTITLES or CTX_INFORMATION or CTX_PLAY_ALL or CTX_PLAY_AS_AUDIO or CTX_ADD_TO_PLAYLIST or CTX_SHARE or CTX_MARK_AS_PLAYED
const val CTX_VIDEO_FLAGS = CTX_APPEND or CTX_PLAY_NEXT or CTX_DELETE or CTX_DOWNLOAD_SUBTITLES or CTX_INFORMATION or CTX_PLAY or CTX_PLAY_ALL or CTX_PLAY_AS_AUDIO or CTX_ADD_TO_PLAYLIST or CTX_SHARE or CTX_MARK_AS_PLAYED
const val CTX_TRACK_FLAGS = CTX_APPEND or CTX_PLAY_NEXT or CTX_DELETE or CTX_INFORMATION or CTX_PLAY_ALL or CTX_ADD_TO_PLAYLIST or CTX_SET_RINGTONE or CTX_SHARE
const val CTX_AUDIO_FLAGS = CTX_PLAY or CTX_APPEND or CTX_PLAY_NEXT or CTX_ADD_TO_PLAYLIST or CTX_INFORMATION
const val CTX_PLAYLIST_ALBUM_FLAGS = CTX_AUDIO_FLAGS or CTX_DELETE

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

@ -60,6 +60,7 @@ import org.videolan.vlc.gui.view.EmptyLoadingState
import org.videolan.vlc.media.MediaUtils
import org.videolan.vlc.media.PlaylistManager
import org.videolan.vlc.media.getAll
import org.videolan.vlc.providers.medialibrary.MedialibraryProvider
import org.videolan.vlc.providers.medialibrary.VideosProvider
import org.videolan.vlc.reloadLibrary
import org.videolan.vlc.util.launchWhenStarted
@ -421,9 +422,10 @@ class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshL
val activity = activity ?: return
when (val media = videoListAdapter.getItem(position)) {
is MediaWrapper -> when (option) {
CTX_PLAY_FROM_START -> viewModel.playVideo(activity, media, position, true)
CTX_PLAY_FROM_START -> viewModel.playVideo(activity, media, position, fromStart = true)
CTX_PLAY_AS_AUDIO -> viewModel.playAudio(activity, media)
CTX_PLAY_ALL -> viewModel.play(position)
CTX_PLAY_ALL -> viewModel.playVideo(activity, media, position, forceAll = true)
CTX_PLAY -> viewModel.play(position)
CTX_INFORMATION -> showInfoDialog(media)
CTX_DELETE -> removeItem(media)
CTX_APPEND -> MediaUtils.appendMedia(activity, media)
@ -493,7 +495,7 @@ class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshL
is VideoCtxClick -> {
when (item) {
is Folder -> showContext(requireActivity(), this@VideoGridFragment, position, item.title, CTX_FOLDER_FLAGS)
is VideoGroup -> showContext(requireActivity(), this@VideoGridFragment, position, item.title, CTX_FOLDER_FLAGS or CTX_RENAME_GROUP or CTX_UNGROUP or CTX_PLAY_ALL)
is VideoGroup -> showContext(requireActivity(), this@VideoGridFragment, position, item.title, CTX_FOLDER_FLAGS or CTX_RENAME_GROUP or CTX_UNGROUP or CTX_PLAY_ALL and CTX_PLAY.inv())
is MediaWrapper -> {
val group = item.type == MediaWrapper.TYPE_GROUP
var flags = if (group) CTX_VIDEO_GROUP_FLAGS else CTX_VIDEO_FLAGS

4
application/vlc-android/src/org/videolan/vlc/viewmodels/mobile/VideosViewModel.kt

@ -127,11 +127,11 @@ class VideosViewModel(context: Context, type: VideoGroupingType, val folder: Fol
MediaUtils.appendMedia(context, list)
}
internal fun playVideo(context: Activity?, mw: MediaWrapper, position: Int, fromStart: Boolean = false) {
internal fun playVideo(context: Activity?, mw: MediaWrapper, position: Int, fromStart: Boolean = false, forceAll:Boolean = false) {
if (context === null) return
mw.removeFlags(MediaWrapper.MEDIA_FORCE_AUDIO)
val settings = Settings.getInstance(context)
if (settings.getBoolean(FORCE_PLAY_ALL, false)) {
if (!fromStart && (settings.getBoolean(FORCE_PLAY_ALL, false) || forceAll)) {
when(val prov = provider) {
is VideosProvider -> MediaUtils.playAll(context, prov, position, false)
is FoldersProvider -> MediaUtils.playAllTracks(context, prov, position, false)

Loading…
Cancel
Save