mirror of
https://gitlab.futo.org/videostreaming/grayjay.git
synced 2025-09-26 19:29:04 +00:00
Merge branch 'copy-playlists' into 'master'
Clone Playlist See merge request videostreaming/grayjay!111
This commit is contained in:
commit
064824aedf
2 changed files with 26 additions and 12 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
|
||||||
|
|
|
@ -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