mirror of
https://github.com/wagesj45/butterflow-ui.git
synced 2024-12-22 09:12:42 -06:00
Migrated to Gu.WPF.Media
Using Gu.WPF.Media control for enhanced playback. See: https://github.com/JohanLarsson/Gu.Wpf.Media
This commit is contained in:
parent
ec5e493e4f
commit
9145071e23
4 changed files with 33 additions and 15 deletions
|
@ -3,6 +3,7 @@
|
|||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:gu="https://github.com/JohanLarsson/Gu.Wpf.Media"
|
||||
xmlns:loc="clr-namespace:butterflow_ui.Localization"
|
||||
xmlns:butterflow_ui="clr-namespace:butterflow_ui"
|
||||
mc:Ignorable="d"
|
||||
|
@ -143,8 +144,19 @@
|
|||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<MediaElement Grid.Row="0" Name="mediaPreview" ScrubbingEnabled="True" LoadedBehavior="Manual" UnloadedBehavior="Stop" Source="{Binding OptionsConfiguration.VideoInput, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type butterflow_ui:MainWindow}}, UpdateSourceTrigger=PropertyChanged}" MediaOpened="mediaPreview_MediaOpened" MediaEnded="mediaPreview_MediaEnded" />
|
||||
<Slider Grid.Row="1" Value="{Binding ElementName=mediaPreview, Path=Position.Seconds, Mode=OneWay}" Maximum="{Binding ElementName=mediaPreview, Path=NaturalDuration.TimeSpan.Seconds}" />
|
||||
<gu:MediaElementWrapper Grid.Row="0" Name="mediaPreview" Stretch="Uniform" ScrubbingEnabled="True" Source="{Binding OptionsConfiguration.VideoInput, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type butterflow_ui:MainWindow}}, UpdateSourceTrigger=PropertyChanged}" MediaOpened="mediaPreview_MediaOpened" MediaEnded="mediaPreview_MediaEnded" />
|
||||
<Grid Grid.Row="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label Grid.Column="0" Content="{Binding ElementName=mediaPreview, Path=Position, Converter={x:Static gu:TimeSpanToStringConverter.Default}}" />
|
||||
<Slider Grid.Column="1" Name="sliderMedia"
|
||||
Value="{Binding ElementName=mediaPreview, Path=Position, Converter={x:Static gu:NullableTimeSpanToSecondsConverter.Default}}"
|
||||
Maximum="{Binding Path=Length, ElementName=mediaPreview, Converter={x:Static gu:NullableTimeSpanToSecondsConverter.Default}}" />
|
||||
<Label Grid.Column="2" Content="{Binding Path=Length, ElementName=mediaPreview, Converter={x:Static gu:TimeSpanToStringConverter.Default}}" />
|
||||
</Grid>
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center">
|
||||
<Button Name="bntVideoBackward" BorderThickness="0" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" Click="bntVideoBackward_Click">
|
||||
<ContentControl HorizontalAlignment="Center" Template="{StaticResource BackwardIcon}" />
|
||||
|
|
|
@ -23,8 +23,7 @@ namespace butterflow_ui
|
|||
{
|
||||
#region Members
|
||||
|
||||
/// <summary> True if the media element is playing a video, false if not. </summary>
|
||||
private bool isPlaying = false;
|
||||
//
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -59,7 +58,7 @@ namespace butterflow_ui
|
|||
//Hack to get the first frame to display in the media preview element.
|
||||
//This also triggers the MediaOpened event so we can get the metadata from the element.
|
||||
mediaPreview.Play();
|
||||
mediaPreview.Pause();
|
||||
mediaPreview.PausePlayback();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -82,18 +81,17 @@ namespace butterflow_ui
|
|||
/// <param name="e"> Routed event information. </param>
|
||||
private void bntVideoPlay_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!this.isPlaying && this.mediaPreview.Source.IsFile)
|
||||
if (this.mediaPreview.CanPlay() || this.mediaPreview.CanPause.GetValueOrDefault(false))
|
||||
{
|
||||
this.isPlaying = true;
|
||||
this.mediaPreview.Play();
|
||||
this.mediaPreview.TogglePlayPause();
|
||||
}
|
||||
|
||||
if(this.mediaPreview.IsPlaying)
|
||||
{
|
||||
this.PlayPauseButtonIcon.Template = Application.Current.Resources["PauseIcon"] as ControlTemplate;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.isPlaying = false;
|
||||
this.mediaPreview.Pause();
|
||||
|
||||
this.PlayPauseButtonIcon.Template = Application.Current.Resources["PlayIcon"] as ControlTemplate;
|
||||
}
|
||||
}
|
||||
|
@ -103,7 +101,6 @@ namespace butterflow_ui
|
|||
/// <param name="e"> Routed event information. </param>
|
||||
private void bntVideoStop_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.isPlaying = false;
|
||||
this.PlayPauseButtonIcon.Template = Application.Current.Resources["PlayIcon"] as ControlTemplate;
|
||||
this.mediaPreview.Stop();
|
||||
}
|
||||
|
@ -113,7 +110,10 @@ namespace butterflow_ui
|
|||
/// <param name="e"> Routed event information. </param>
|
||||
private void bntVideoForward_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.mediaPreview.Position.Add(TimeSpan.FromSeconds(5));
|
||||
if (this.mediaPreview.CanSkipForward(null))
|
||||
{
|
||||
this.mediaPreview.SkipForward(null);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary> Event handler. Called by bntVideoBackward for click events. </summary>
|
||||
|
@ -121,7 +121,10 @@ namespace butterflow_ui
|
|||
/// <param name="e"> Routed event information. </param>
|
||||
private void bntVideoBackward_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.mediaPreview.Position.Subtract(TimeSpan.FromSeconds(5));
|
||||
if (this.mediaPreview.CanSkipBack(null))
|
||||
{
|
||||
this.mediaPreview.SkipBack(null);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary> Event handler. Called by mediaPreview for media opened events. </summary>
|
||||
|
@ -138,7 +141,6 @@ namespace butterflow_ui
|
|||
/// <param name="e"> Routed event information. </param>
|
||||
private void mediaPreview_MediaEnded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.isPlaying = false;
|
||||
this.PlayPauseButtonIcon.Template = Application.Current.Resources["PlayIcon"] as ControlTemplate;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,6 +37,9 @@
|
|||
<Reference Include="csmic, Version=1.1.4.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\csmic.1.1.4\lib\net40\csmic.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Gu.Wpf.Media, Version=0.5.0.2, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Gu.Wpf.Media.0.5.0.2\lib\net45\Gu.Wpf.Media.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="csmic" version="1.1.4" targetFramework="net471" />
|
||||
<package id="Gu.Wpf.Media" version="0.5.0.2" targetFramework="net471" />
|
||||
</packages>
|
Loading…
Reference in a new issue