async void DownloadURL(string url) { url = await ResolveShortcut(url); VideoFileDownloader.DownloadAsync(url, (id, downloadData) => { Dispatcher.Invoke(() => { if (downloadData == null) { downloads.Remove(id); } else { downloads[id] = downloadData; } status.Downloads = downloads.Values.ToList(); }); }, async videoFile => { await Database.SaveVideoFileAsync(videoFile); UpdateVideoFiles(); queue.Add(videoFile); }); }
// Use this for initialization void Start() { videoDownloaderScript = GetComponent <VideoFileDownloader>(); videoPlayerScript = GetComponent <VideoClipPlayer>(); dataFullyLoaded = false; sessionStarted = false; }
void OnMessage(Message message, AsyncQueue <byte[]> queue) { var command = message.GetString(); switch (command) { case "QueueVideos": QueueVideos(message.GetInts(), message.GetString()); break; case "SetPosition": SetPosition(message.GetInt(), message.GetBool()); break; case "ToggleMediaPlaying": ToggleMediaPlaying(message.GetBool()); break; case "SetVolume": SetVolume(message.GetInt(), message.GetBool()); break; case "MediaForward": MediaForward(); break; case "ToggleSlidesPlaying": ToggleSlidesPlaying(); break; case "SetSlidesQuery": SlidesQuery = message.GetString(); SlidesSize = message.GetString(); break; case "SetSlideDisplayTime": SlideDisplayTime = message.GetInt(); break; case "CycleSlide": CycleSlide(message.GetBool() ? 1 : -1); break; case "DownloadURL": DownloadURL(message.GetString()); break; case "UpdateYouTubeDL": VideoFileDownloader.Update(); break; case "EditTags": EditTags(message.GetEditTags()); break; case "DeleteVideos": DeleteVideos(message.GetInts()); break; case "PresentationMode": PresentationMode(); break; case "Sleep": Sleep(); break; case "Shutdown": Shutdown(); break; default: throw new Exception("Invalid command"); } }