Browse Source

Implement the default playback action for video

merge-requests/2174/head
Nicolas Pomepuy 1 year ago
parent
commit
e6ea5245ea
  1. 1
      application/resources/src/main/res/values/strings.xml
  2. 2
      application/vlc-android/src/org/videolan/vlc/gui/helpers/DefaultPlaybackAction.kt
  3. 28
      application/vlc-android/src/org/videolan/vlc/gui/video/VideoGridFragment.kt
  4. 5
      application/vlc-android/src/org/videolan/vlc/viewmodels/mobile/VideosViewModel.kt

1
application/resources/src/main/res/values/strings.xml

@ -763,6 +763,7 @@
<string name="episodes">episodes</string>
<string name="movies">movies</string>
<string name="videos">videos</string>
<string name="default_action_videos">Videos</string>
<string name="videos_all">All videos</string>
<string name="clear_playback_history">Clear playback history</string>
<string name="ml_scanning">Scanning for media files</string>

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

@ -70,7 +70,7 @@ enum class DefaultPlaybackAction(@StringRes val title: Int, var selected: Boolea
* @constructor Create empty Default playback action media type
*/
enum class DefaultPlaybackActionMediaType(@StringRes val title: Int, val defaultActionKey: String, val allowPlayAll: Boolean = true) {
VIDEO(R.string.videos, "default_playback_action_video"),
VIDEO(R.string.default_action_videos, "default_playback_action_video"),
ARTIST(R.string.artists, "default_playback_action_artist", false),
ALBUM(R.string.albums, "default_playback_action_album", false),
TRACK(R.string.tracks, "default_playback_action_track"),

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

@ -69,7 +69,6 @@ import org.videolan.resources.PLAYLIST_TYPE_VIDEO
import org.videolan.resources.UPDATE_SEEN
import org.videolan.resources.util.parcelable
import org.videolan.resources.util.parcelableArray
import org.videolan.resources.util.parcelableList
import org.videolan.resources.util.waitForML
import org.videolan.tools.MultiSelectHelper
import org.videolan.tools.PLAYBACK_HISTORY
@ -89,6 +88,7 @@ import org.videolan.vlc.gui.dialogs.CONFIRM_PERMISSION_CHANGED
import org.videolan.vlc.gui.dialogs.CONFIRM_RENAME_DIALOG_RESULT
import org.videolan.vlc.gui.dialogs.CURRENT_SORT
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.KEY_PERMISSION_CHANGED
@ -100,6 +100,8 @@ import org.videolan.vlc.gui.dialogs.SavePlaylistDialog
import org.videolan.vlc.gui.dialogs.VIDEO_GROUPING
import org.videolan.vlc.gui.dialogs.showContext
import org.videolan.vlc.gui.helpers.AudioUtil.setRingtone
import org.videolan.vlc.gui.helpers.DefaultPlaybackAction
import org.videolan.vlc.gui.helpers.DefaultPlaybackActionMediaType
import org.videolan.vlc.gui.helpers.ItemOffsetDecoration
import org.videolan.vlc.gui.helpers.MedialibraryUtils
import org.videolan.vlc.gui.helpers.UiTools
@ -274,12 +276,14 @@ class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshL
}
//Open the display settings Bottom sheet
DisplaySettingsDialog.newInstance(
displayInCards = settings.getBoolean(KEY_VIDEOS_CARDS, true),
onlyFavs = viewModel.provider.onlyFavorites,
sorts = sorts,
currentSort = viewModel.provider.sort,
currentSortDesc = viewModel.provider.desc,
videoGroup = settings.getString(KEY_GROUP_VIDEOS, GROUP_VIDEOS_NAME)
displayInCards = settings.getBoolean(KEY_VIDEOS_CARDS, true),
onlyFavs = viewModel.provider.onlyFavorites,
sorts = sorts,
currentSort = viewModel.provider.sort,
currentSortDesc = viewModel.provider.desc,
videoGroup = settings.getString(KEY_GROUP_VIDEOS, GROUP_VIDEOS_NAME),
defaultPlaybackActions = DefaultPlaybackActionMediaType.VIDEO.getDefaultPlaybackActions(settings),
defaultActionType = getString(DefaultPlaybackActionMediaType.VIDEO.title)
)
.show(requireActivity().supportFragmentManager, "DisplaySettingsDialog")
}
@ -370,6 +374,9 @@ class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshL
settings.putSingle(KEY_GROUP_VIDEOS, videoGroup.value)
changeGroupingType(videoGroup.type)
}
DEFAULT_ACTIONS -> {
Settings.getInstance(requireActivity()).putSingle(DefaultPlaybackActionMediaType.VIDEO.defaultActionKey, (value as DefaultPlaybackAction).name)
}
}
}
@ -764,7 +771,12 @@ class VideoGridFragment : MediaBrowserFragment<VideosViewModel>(), SwipeRefreshL
multiSelectHelper.toggleSelection(position)
invalidateActionMode()
} else {
viewModel.playVideo(activity, item, position)
when(DefaultPlaybackActionMediaType.VIDEO.getCurrentPlaybackAction(settings)) {
DefaultPlaybackAction.PLAY -> viewModel.playVideo(activity, item, position)
DefaultPlaybackAction.ADD_TO_QUEUE -> MediaUtils.appendMedia(activity, item)
DefaultPlaybackAction.INSERT_NEXT -> MediaUtils.insertNext(activity, item)
else -> viewModel.playVideo(activity, item, position, forceAll = true)
}
}
}
is Folder -> {

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

@ -32,8 +32,6 @@ import org.videolan.medialibrary.interfaces.media.Folder
import org.videolan.medialibrary.interfaces.media.MediaWrapper
import org.videolan.medialibrary.interfaces.media.VideoGroup
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.tools.PLAYLIST_MODE_VIDEO
import org.videolan.tools.Settings
import org.videolan.tools.isStarted
import org.videolan.vlc.gui.helpers.UiTools
import org.videolan.vlc.gui.helpers.UiTools.addToPlaylist
@ -136,8 +134,7 @@ class VideosViewModel(context: Context, type: VideoGroupingType, val folder: Fol
}
mw.removeFlags(MediaWrapper.MEDIA_FORCE_AUDIO)
PlaylistManager.playingAsAudio = false
val settings = Settings.getInstance(context)
if (!fromStart && (settings.getBoolean(PLAYLIST_MODE_VIDEO, Settings.tvUI) || forceAll)) {
if (forceAll) {
when(val prov = provider) {
is VideosProvider -> MediaUtils.playAll(context, prov, position, false)
is FoldersProvider -> MediaUtils.playAllTracks(context, prov, position, false)

Loading…
Cancel
Save