private void PlayButton_Click(object sender, RoutedEventArgs e) { if (isPlaying) { ViewTimeline.Pause(); isPlaying = false; return; } else if (!Loaded) { ViewTimeline.Source = new Uri(Model.SourceInfo.FullName); ViewTimeline.LoadedBehavior = MediaState.Manual; timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromMilliseconds(10); timer.Tick += (s, a) => { CheckPlayTime(); }; ViewTimeline.MediaOpened += SetMainVideo; ViewTimeline.Play(); Loaded = true; return; } else { ViewTimeline.Play(); isPlaying = true; } }
private void doInitialLoad() { ViewTimeline.Source = new Uri(Model.SourceInfo.FullName); ViewTimeline.LoadedBehavior = MediaState.Manual; MainTimer = new DispatcherTimer(); MainTimer.Interval = TimeSpan.FromMilliseconds(100); MainTimer.Tick += (s, a) => { CheckPlayTime(); }; ViewTimeline.MediaOpened += SetMainVideo; ViewTimeline.Play(); ViewTimeline.Pause(); Model.WindowState.isLoaded = true; }
private void CheckPlayTime() { if (Model.WindowState.isPlaying) { Model.WindowState.TimeSet += 0.1; } var pixelsRelativeToSeconds = Model.WindowState.TimeSet * Model.Scale; CheckSubtitle(pixelsRelativeToSeconds); for (var i = Model.MediaTracks.Count - 1; i >= 0; i--) { if (InPatchSection(Model.MediaTracks[i], pixelsRelativeToSeconds)) { ViewTimeline.Pause(); Canvas.SetLeft(CurrentTime, Model.WindowState.TimeSet * Model.Scale); if (Model.WindowState.currentPatch == Model.MediaTracks[i]) { return; } Model.WindowState.currentPatch = Model.MediaTracks[i]; PatchWindow.Source = Model.MediaTracks[i].Path; var shift = Model.WindowState.currentPatch.LeftShiftInPixels; var position = pixelsRelativeToSeconds - shift + Model.WindowState.currentPatch.StartPixel; PatchWindow.Position = TimeSpan.FromSeconds(position / Model.Scale); if (Model.WindowState.isPlaying) { PatchWindow.Play(); } ViewTimeline.Volume = 0; ViewTimeline.Visibility = System.Windows.Visibility.Hidden; PatchWindow.Visibility = System.Windows.Visibility.Visible; Canvas.SetLeft(CurrentTime, Model.WindowState.TimeSet * Model.Scale); return; } } PatchWindow.Pause(); if (Model.WindowState.isPlaying) { ViewTimeline.Play(); } PatchWindow.Visibility = System.Windows.Visibility.Collapsed; ViewTimeline.Volume = Model.WindowState.volume; ViewTimeline.Visibility = System.Windows.Visibility.Visible; Model.WindowState.currentPatch = null; Canvas.SetLeft(CurrentTime, Model.WindowState.TimeSet * Model.Scale); }
private void PausedChanged() { if (Model.WindowState.isPlaying) { ViewTimeline.Pause(); PatchWindow.Pause(); Model.WindowState.isPlaying = false; return; } else if (!Model.WindowState.isLoaded) { doInitialLoad(); return; } else { ViewTimeline.Play(); PatchWindow.Play(); Model.WindowState.isPlaying = true; } }