| 
									
										
										
										
											2020-07-18 11:58:03 +02:00
										 |  |  | import 'package:musicus_common/musicus_common.dart'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MusicusDesktopPlayback extends MusicusPlayback { | 
					
						
							| 
									
										
										
										
											2020-07-18 13:10:31 +02:00
										 |  |  |   @override | 
					
						
							|  |  |  |   Future<void> setup() async {} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-18 11:58:03 +02:00
										 |  |  |   @override | 
					
						
							|  |  |  |   Future<void> addTracks(List<InternalTrack> tracks) async { | 
					
						
							| 
									
										
										
										
											2020-07-18 13:10:31 +02:00
										 |  |  |     final List<InternalTrack> newPlaylist = List.from(playlist.value); | 
					
						
							|  |  |  |     newPlaylist.addAll(tracks); | 
					
						
							|  |  |  |     playlist.add(newPlaylist); | 
					
						
							|  |  |  |     active.add(true); | 
					
						
							| 
									
										
										
										
											2020-07-18 11:58:03 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<void> playPause() async { | 
					
						
							| 
									
										
										
										
											2020-07-18 13:10:31 +02:00
										 |  |  |     playing.add(!playing.value); | 
					
						
							| 
									
										
										
										
											2020-07-18 11:58:03 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<void> removeTrack(int index) async { | 
					
						
							| 
									
										
										
										
											2020-07-18 13:10:31 +02:00
										 |  |  |     final List<InternalTrack> tracks = List.from(playlist.value); | 
					
						
							|  |  |  |     tracks.removeAt(index); | 
					
						
							|  |  |  |     playlist.add(tracks); | 
					
						
							| 
									
										
										
										
											2020-07-18 11:58:03 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<void> seekTo(double pos) async { | 
					
						
							| 
									
										
										
										
											2020-07-18 13:10:31 +02:00
										 |  |  |     if (active.value && pos >= 0.0 && pos <= 1.0) { | 
					
						
							|  |  |  |       final durationMs = duration.value.inMilliseconds; | 
					
						
							|  |  |  |       updatePosition((pos * durationMs).floor()); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-07-18 11:58:03 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<void> skipTo(int index) async { | 
					
						
							| 
									
										
										
										
											2020-07-18 13:10:31 +02:00
										 |  |  |     updateCurrentTrack(index); | 
					
						
							| 
									
										
										
										
											2020-07-18 11:58:03 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<void> skipToNext() async { | 
					
						
							| 
									
										
										
										
											2020-07-18 13:10:31 +02:00
										 |  |  |     final index = currentIndex.value; | 
					
						
							|  |  |  |     if (playlist.value.length > index + 1) { | 
					
						
							|  |  |  |       updateCurrentTrack(index + 1); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-07-18 11:58:03 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<void> skipToPrevious() async { | 
					
						
							| 
									
										
										
										
											2020-07-18 13:10:31 +02:00
										 |  |  |     final index = currentIndex.value; | 
					
						
							|  |  |  |     if (index > 0) { | 
					
						
							|  |  |  |       updateCurrentTrack(index - 1); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-07-18 11:58:03 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | } |