mirror of
https://gitlab.futo.org/videostreaming/grayjay.git
synced 2025-09-06 17:49:13 +00:00
Merge branch 'master' of gitlab.futo.org:videostreaming/grayjay
This commit is contained in:
commit
363099b303
3 changed files with 39 additions and 13 deletions
|
@ -10,7 +10,6 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import com.futo.platformplayer.*
|
import com.futo.platformplayer.*
|
||||||
import com.futo.platformplayer.activities.IWithResultLauncher
|
import com.futo.platformplayer.activities.IWithResultLauncher
|
||||||
import com.futo.platformplayer.api.media.models.playlists.IPlatformPlaylist
|
import com.futo.platformplayer.api.media.models.playlists.IPlatformPlaylist
|
||||||
import com.futo.platformplayer.api.media.models.playlists.IPlatformPlaylistDetails
|
|
||||||
import com.futo.platformplayer.api.media.models.video.IPlatformVideo
|
import com.futo.platformplayer.api.media.models.video.IPlatformVideo
|
||||||
import com.futo.platformplayer.api.media.models.video.SerializedPlatformVideo
|
import com.futo.platformplayer.api.media.models.video.SerializedPlatformVideo
|
||||||
import com.futo.platformplayer.constructs.TaskHandler
|
import com.futo.platformplayer.constructs.TaskHandler
|
||||||
|
@ -165,14 +164,24 @@ class PlaylistFragment : MainFragment() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun copyPlaylist(playlist: Playlist) {
|
private fun savePlaylist(playlist: Playlist) {
|
||||||
StatePlaylists.instance.playlistStore.save(playlist)
|
StatePlaylists.instance.playlistStore.save(playlist)
|
||||||
_fragment.topBar?.assume<NavigationTopBarFragment>()?.setMenuItems(
|
|
||||||
arrayListOf()
|
|
||||||
)
|
|
||||||
UIDialogs.toast("Playlist saved")
|
UIDialogs.toast("Playlist saved")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun copyPlaylist(playlist: Playlist) {
|
||||||
|
var copyNumber = 1
|
||||||
|
var newName = "${playlist.name} (Copy)"
|
||||||
|
val playlists = StatePlaylists.instance.playlistStore.getItems()
|
||||||
|
while (playlists.any { it.name == newName }) {
|
||||||
|
copyNumber += 1
|
||||||
|
newName = "${playlist.name} (Copy $copyNumber)"
|
||||||
|
}
|
||||||
|
StatePlaylists.instance.playlistStore.save(playlist.makeCopy(newName))
|
||||||
|
_fragment.navigate<PlaylistsFragment>(withHistory = false)
|
||||||
|
UIDialogs.toast("Playlist copied")
|
||||||
|
}
|
||||||
|
|
||||||
fun onShown(parameter: Any?) {
|
fun onShown(parameter: Any?) {
|
||||||
_taskLoadPlaylist.cancel()
|
_taskLoadPlaylist.cancel()
|
||||||
|
|
||||||
|
@ -188,12 +197,14 @@ class PlaylistFragment : MainFragment() {
|
||||||
setButtonExportVisible(false)
|
setButtonExportVisible(false)
|
||||||
setButtonEditVisible(true)
|
setButtonEditVisible(true)
|
||||||
|
|
||||||
if (!StatePlaylists.instance.playlistStore.hasItem { it.id == parameter.id }) {
|
_fragment.topBar?.assume<NavigationTopBarFragment>()
|
||||||
_fragment.topBar?.assume<NavigationTopBarFragment>()
|
?.setMenuItems(arrayListOf(Pair(R.drawable.ic_copy) {
|
||||||
?.setMenuItems(arrayListOf(Pair(R.drawable.ic_copy) {
|
if (StatePlaylists.instance.playlistStore.hasItem { it.id == parameter.id }) {
|
||||||
copyPlaylist(parameter)
|
copyPlaylist(parameter)
|
||||||
}))
|
} else {
|
||||||
}
|
savePlaylist(parameter)
|
||||||
|
}
|
||||||
|
}))
|
||||||
} else {
|
} else {
|
||||||
setName(null)
|
setName(null)
|
||||||
setVideos(null, false)
|
setVideos(null, false)
|
||||||
|
@ -259,7 +270,7 @@ class PlaylistFragment : MainFragment() {
|
||||||
val playlist = _playlist ?: return
|
val playlist = _playlist ?: return
|
||||||
if (!StatePlaylists.instance.playlistStore.hasItem { it.id == playlist.id }) {
|
if (!StatePlaylists.instance.playlistStore.hasItem { it.id == playlist.id }) {
|
||||||
UIDialogs.showConfirmationDialog(context, "Playlist must be saved to download", {
|
UIDialogs.showConfirmationDialog(context, "Playlist must be saved to download", {
|
||||||
copyPlaylist(playlist)
|
savePlaylist(playlist)
|
||||||
download()
|
download()
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
|
@ -292,7 +303,7 @@ class PlaylistFragment : MainFragment() {
|
||||||
val playlist = _playlist ?: return
|
val playlist = _playlist ?: return
|
||||||
if (!StatePlaylists.instance.playlistStore.hasItem { it.id == playlist.id }) {
|
if (!StatePlaylists.instance.playlistStore.hasItem { it.id == playlist.id }) {
|
||||||
UIDialogs.showConfirmationDialog(context, "Playlist must be saved to edit the name", {
|
UIDialogs.showConfirmationDialog(context, "Playlist must be saved to edit the name", {
|
||||||
copyPlaylist(playlist)
|
savePlaylist(playlist)
|
||||||
onEditClick()
|
onEditClick()
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
|
|
|
@ -2,6 +2,8 @@ package com.futo.platformplayer.fragment.mainactivity.main
|
||||||
|
|
||||||
import android.app.PictureInPictureParams
|
import android.app.PictureInPictureParams
|
||||||
import android.app.RemoteAction
|
import android.app.RemoteAction
|
||||||
|
import android.content.ClipData
|
||||||
|
import android.content.ClipboardManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
|
@ -408,6 +410,14 @@ class VideoDetailView : ConstraintLayout {
|
||||||
showChaptersUI();
|
showChaptersUI();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_title.setOnLongClickListener {
|
||||||
|
val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager;
|
||||||
|
val clip = ClipData.newPlainText("Video Title", (it as TextView).text);
|
||||||
|
clipboard.setPrimaryClip(clip);
|
||||||
|
UIDialogs.toast(context, "Copied", false)
|
||||||
|
// let other interactions happen based on the touch
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
_buttonSubscribe.onSubscribed.subscribe {
|
_buttonSubscribe.onSubscribed.subscribe {
|
||||||
_slideUpOverlay = UISlideOverlays.showSubscriptionOptionsOverlay(it, _overlayContainer);
|
_slideUpOverlay = UISlideOverlays.showSubscriptionOptionsOverlay(it, _overlayContainer);
|
||||||
|
@ -2565,7 +2575,9 @@ class VideoDetailView : ConstraintLayout {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun saveBrightness() {
|
fun saveBrightness() {
|
||||||
_player.gestureControl.saveBrightness()
|
if (Settings.instance.gestureControls.useSystemBrightness) {
|
||||||
|
_player.gestureControl.saveBrightness()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fun restoreBrightness() {
|
fun restoreBrightness() {
|
||||||
_player.gestureControl.restoreBrightness()
|
_player.gestureControl.restoreBrightness()
|
||||||
|
|
|
@ -35,6 +35,9 @@ class Playlist {
|
||||||
this.videos = ArrayList(list);
|
this.videos = ArrayList(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun makeCopy(newName: String? = null): Playlist {
|
||||||
|
return Playlist(newName ?: name, videos)
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun fromV8(config: SourcePluginConfig, obj: V8ValueObject?): Playlist? {
|
fun fromV8(config: SourcePluginConfig, obj: V8ValueObject?): Playlist? {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue