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 }