File indexing completed on 2024-05-19 04:48:29

0001 .import org.mauikit.filebrowsing 1.3 as FB
0002 
0003 .import org.maui.vvave 1.0 as Vvave
0004 
0005 function playTrack()
0006 {
0007     player.url = currentTrack.url ? currentTrack.url : "";
0008     player.play()
0009 }
0010 
0011 function queueTracks(tracks)
0012 {
0013     if(tracks && tracks.length > 0)
0014     {
0015         appendTracksAt(tracks, currentTrackIndex+1)
0016         // root.notify("", "Queue", tracks.length + " tracks added put on queue")
0017         // This freezes the whole UI. It should probably be a toast popup instead.
0018         // Something similar AbstractApplicationWindow::showPassiveNotification() from Kirigami would be less flow-breaking.
0019     }
0020 }
0021 
0022 function setLyrics(lyrics)
0023 {
0024     currentTrack.lyrics = lyrics
0025     infoView.lyricsText.text = lyrics
0026 }
0027 
0028 function stop()
0029 {
0030     player.stop()
0031 }
0032 
0033 function changeCurrentIndex(index)
0034 {
0035     root.playlistManager.changeCurrentIndex(index)
0036 }
0037 
0038 function nextTrack()
0039 {
0040     root.playlistManager.next()
0041 }
0042 
0043 function previousTrack()
0044 {
0045     root.playlistManager.previous()
0046 }
0047 
0048 function playAt(index)
0049 {
0050     root.playlistManager.play(index)
0051 }
0052 
0053 function quickPlay(track)
0054 {
0055     //    root.pageStack.currentIndex = 0
0056     appendTrack(track)
0057     playAt(mainPlaylist.listView.count-1)
0058     mainPlaylist.listView.positionViewAtEnd()
0059 }
0060 
0061 function appendTracksAt(tracks, at)
0062 {
0063     for(var i in tracks)
0064     {
0065         mainPlaylist.listModel.list.appendAt(tracks[i], parseInt(at)+parseInt(i))
0066     }
0067 }
0068 
0069 function appendUrls(urls)
0070 {
0071     mainPlaylist.listModel.list.appendUrls(urls)
0072 }
0073 
0074 function appendUrlsAt(urls, at)
0075 {
0076     mainPlaylist.listModel.list.insertUrls(urls, at)
0077 }
0078 
0079 function appendTrack(track)
0080 {
0081     if(track)
0082     {
0083         root.playlistManager.append(track)
0084         if(sync === true)
0085         {
0086             FB.Tagging.tagUrl(track.url, syncPlaylist)
0087         }
0088     }
0089 }
0090 
0091 function addTrack(track)
0092 {
0093     if(track)
0094     {
0095         appendTrack(track)
0096         mainPlaylist.listView.positionViewAtEnd()
0097     }
0098 }
0099 
0100 function appendAll(tracks)
0101 {
0102     for(var track of tracks)
0103         appendTrack(track)
0104 
0105     mainPlaylist.listView.positionViewAtEnd()
0106 }
0107 
0108 function playAll(tracks)
0109 {
0110     sync = false
0111     syncPlaylist = ""
0112 
0113     root.playlistManager.clear()
0114     appendAll(tracks)
0115 
0116     if(_drawer.modal && !_drawer.visible)
0117         _drawer.visible = true
0118 
0119     mainPlaylist.listView.positionViewAtBeginning()
0120     playAt(0)
0121 }
0122 
0123 function appendAllModel(model)
0124 {
0125     mainPlaylist.listModel.list.copy(model)
0126     mainPlaylist.listView.positionViewAtEnd()
0127 
0128     if (model.count > 1 && root.playlistManager.playMode == Vvave.Playlist.Shuffle)
0129         root.playlistManager.shuffleRange(
0130             mainPlaylist.listView.count - model.count,
0131             mainPlaylist.listView.count
0132         )
0133 }
0134 
0135 function playQuery(query)
0136 {
0137     const tracks = Vvave.Vvave.getTracks(query)
0138     playAll(tracks)
0139 }
0140 
0141 function playAllModel(model)
0142 {
0143     sync = false
0144     syncPlaylist = ""
0145 
0146     root.playlistManager.clear()
0147     appendAllModel(model)
0148 
0149     if(_drawer.modal && !_drawer.visible)
0150         _drawer.visible = true
0151 
0152     mainPlaylist.listView.positionViewAtBeginning()
0153     playAt(0)
0154 }
0155 
0156 function shuffleAllModel(model)
0157 {
0158     sync = false
0159     syncPlaylist = ""
0160 
0161     root.playlistManager.clear()
0162     appendAllModel(model)
0163 
0164     if(_drawer.modal && !_drawer.visible)
0165         _drawer.visible = true
0166 
0167     mainPlaylist.listView.positionViewAtBeginning()
0168     root.playlistManager.playMode = Vvave.Playlist.Shuffle
0169     playAt(0)
0170 }