Archived
1
0

Video player development 2

This commit is contained in:
Michael Gordeev
2018-06-16 21:13:27 +03:00
parent 4af35951f5
commit fba1341692
2 changed files with 74 additions and 24 deletions
+20 -13
View File
@@ -12,7 +12,8 @@
SizeChanged="UserControl_SizeChanged"
Tapped="UserControl_Tapped"
PointerMoved="UserControl_PointerMoved"
PointerExited="UserControl_PointerExited">
PointerExited="UserControl_PointerExited"
PointerEntered="UserControl_PointerEntered">
<Grid Background="White">
<MediaElement CurrentStateChanged="videoSource_CurrentStateChanged" AutoPlay="False" Name="videoSource" AreTransportControlsEnabled="False" PosterSource="ms-appx:///Assets/videoThumbSample.png"/>
@@ -23,10 +24,10 @@
<RowDefinition/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Name="header">
<Grid.Background>
<Grid Grid.Row="0" Name="header" Background="#7F000000">
<!--<Grid.Background>
<AcrylicBrush TintColor="Black" TintOpacity="0.795" BackgroundSource="Backdrop" AlwaysUseFallback="False" Opacity="0.8"/>
</Grid.Background>
</Grid.Background>-->
<StackPanel Orientation="Horizontal">
<Button Visibility="Collapsed" Background="Transparent" FontFamily="Segoe MDL2 Assets" Content="&#xE099;" Foreground="White" Width="50" Height="50" FontSize="25" ToolTipService.ToolTip="Minimize"/>
<TextBlock Name="title" Text="This is Video title" Foreground="White" VerticalAlignment="Center" TextWrapping="WrapWholeWords" FontSize="20" Margin="10,0,0,0" MaxLines="1" ToolTipService.ToolTip="Title"/>
@@ -36,10 +37,11 @@
<Button Name="miniView" Click="miniView_Click" Background="Transparent" FontFamily="Segoe MDL2 Assets" Content="&#xE2B3;" Foreground="White" Width="50" Height="50" FontSize="25" ToolTipService.ToolTip="Compact view mode"/>
</StackPanel>
</Grid>
<Button Visibility="Collapsed" VerticalAlignment="Top" HorizontalAlignment="Right" Name="miniViewExit" Grid.Row="1" Click="miniView_Click" Background="Transparent" FontFamily="Segoe MDL2 Assets" Content="&#xE2B3;" Foreground="White" Width="50" Height="50" FontSize="25" ToolTipService.ToolTip="Compact view mode"/>
<StackPanel Name="touchCentral" Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Collapsed">
<Button VerticalAlignment="Center" Content="&#xED3C;" FontFamily="Segoe MDL2 Assets" Background="Transparent" FontSize="20" Foreground="WhiteSmoke" Name="touchBack10" Click="back10_Click"/>
<Button VerticalAlignment="Center" Content="&#xE102;" FontFamily="Segoe MDL2 Assets" Background="Transparent" FontSize="50" Foreground="WhiteSmoke" Name="touchPlay" Click="play_Click"/>
<Button VerticalAlignment="Center" Content="&#xED3D;" FontFamily="Segoe MDL2 Assets" Background="Transparent" FontSize="20" Foreground="WhiteSmoke" Name="touchFwd30" Click="fwd30_Click"/>
<Button VerticalAlignment="Center" Content="&#xED3C;" FontFamily="Segoe MDL2 Assets" Background="Transparent" FontSize="40" Foreground="WhiteSmoke" Name="touchBack10" Click="back10_Click"/>
<Button VerticalAlignment="Center" Content="&#xE102;" FontFamily="Segoe MDL2 Assets" Background="Transparent" FontSize="100" Foreground="WhiteSmoke" Name="touchPlay" Click="play_Click"/>
<Button VerticalAlignment="Center" Content="&#xED3D;" FontFamily="Segoe MDL2 Assets" Background="Transparent" FontSize="40" Foreground="WhiteSmoke" Name="touchFwd30" Click="fwd30_Click"/>
</StackPanel>
<Button Name="skipAd" Visibility="Collapsed" Grid.Row="1" HorizontalAlignment="Right" Foreground="White" VerticalAlignment="Bottom" Padding="10" BorderBrush="Black" BorderThickness="2" Background="#7E000000">
<StackPanel Orientation="Horizontal">
@@ -47,10 +49,10 @@
<TextBlock Text="Skip ad" FontSize="30" TextWrapping="WrapWholeWords" MaxWidth="250"/>
</StackPanel>
</Button>
<Grid Grid.Row="2" Name="mainControls">
<Grid.Background>
<Grid Grid.Row="2" Name="mainControls" Background="#7F000000">
<!--<Grid.Background>
<AcrylicBrush TintColor="Black" TintOpacity="0.795" BackgroundSource="Backdrop" AlwaysUseFallback="False" Opacity="0.8"/>
</Grid.Background>
</Grid.Background>-->
<ProgressBar Name="bufferingBar" VerticalAlignment="Top" Margin="0,-4,0,0" IsIndeterminate="True" Visibility="Visible"/>
<Grid>
<Grid.ColumnDefinitions>
@@ -81,18 +83,23 @@
<TextBlock Text="LIVE" VerticalAlignment="Center"/>
</StackPanel>
</Button>
<TextBlock Grid.Column="1" Name="elapsedTime" Foreground="White" Text="18:28" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="10,0,10,0" ToolTipService.ToolTip="Time elapsed"/>
<TextBlock Grid.Column="1" Name="remainingTime" Foreground="White" Text="18:28" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="10,0,10,0" ToolTipService.ToolTip="Time remaining"/>
<Slider Grid.Column="1" PointerCaptureLost="seek_PointerCaptureLost" ValueChanged="seek_ValueChanged" Name="seek" VerticalAlignment="Top" ToolTipService.ToolTip="Seek" IsThumbToolTipEnabled="False" HorizontalAlignment="Stretch"/>
<Grid Name="seekPanel" Grid.Column="1">
<TextBlock Name="elapsedTime" Foreground="White" Text="18:28" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="10,0,10,0" ToolTipService.ToolTip="Time elapsed"/>
<TextBlock Name="remainingTime" Foreground="White" Text="18:28" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="10,0,10,0" ToolTipService.ToolTip="Time remaining"/>
<Slider PointerCaptureLost="seek_PointerCaptureLost" ValueChanged="seek_ValueChanged" Name="seek" VerticalAlignment="Top" ToolTipService.ToolTip="Seek" IsThumbToolTipEnabled="False" HorizontalAlignment="Stretch"/>
</Grid>
</Grid>
<StackPanel Grid.Column="2" Orientation="Horizontal">
<StackPanel Name="backFwdPanel" Orientation="Horizontal">
<Button Click="back10_Click" Name="back10" Background="Transparent" FontFamily="Segoe MDL2 Assets" Content="&#xED3C;" Foreground="White" Width="50" Height="50" FontSize="25" ToolTipService.ToolTip="Skip back for 10 seconds"/>
<Button Click="fwd30_Click" Name="fwd30" Background="Transparent" FontFamily="Segoe MDL2 Assets" Content="&#xED3D;" Foreground="White" Width="50" Height="50" FontSize="25" ToolTipService.ToolTip="Skip forward for 30 seconds"/>
<Line Stroke="White" StrokeThickness="2" Y1="5" Y2="45"/>
<Button Background="Transparent" FontFamily="Segoe MDL2 Assets" Content="&#xE190;" Foreground="White" Width="50" Height="50" FontSize="25" ToolTipService.ToolTip="Subtitles" Name="openSubs" Click="openSubs_Click"/>
</StackPanel>
<Button Background="Transparent" FontFamily="Segoe MDL2 Assets" Content="&#xE713;" Foreground="White" Width="50" Height="50" FontSize="25" ToolTipService.ToolTip="Video quality" Name="openSets" Click="openSets_Click"/>
<Button Background="Transparent" FontFamily="Segoe MDL2 Assets" Content="&#xE740;" Foreground="White" Width="50" Height="50" FontSize="25" ToolTipService.ToolTip="Full screen" Name="fullscreen" Click="fullscreen_Click"/>
</StackPanel>
+50 -7
View File
@@ -38,11 +38,14 @@ namespace FoxTube
private bool miniViewed = false;
private bool fullScreen = false;
private bool pointerCaptured = false;
TimeSpan elapsed;
TimeSpan remaining;
TimeSpan total;
Google.Apis.YouTube.v3.Data.Video item;
SystemMediaTransportControls systemControls = SystemMediaTransportControls.GetForCurrentView();
YouTubeQuality[] qualities = new YouTubeQuality[8]
@@ -90,7 +93,28 @@ namespace FoxTube
VideoListResponse response = await request.ExecuteAsync();
var item = response.Items[0];
item = response.Items[0];
if(item.ContentDetails.ContentRating.RussiaRating == "russia18")
{
matureBlock.Visibility = Visibility.Visible;
return;
}
if (item.Snippet.LiveBroadcastContent == "live")
{
goLive.Visibility = Visibility.Visible;
seekPanel.Visibility = Visibility.Collapsed;
backFwdPanel.Visibility = Visibility.Collapsed;
touchBack10.Visibility = touchFwd30.Visibility = Visibility.Collapsed;
}
else if(item.Snippet.LiveBroadcastContent == "upcoming")
{
mainControls.Visibility = Visibility.Collapsed;
touchCentral.Visibility = Visibility.Collapsed;
miniView.Visibility = Visibility.Collapsed;
controls.Visibility = Visibility.Visible;
}
videoSource.PosterSource = new BitmapImage(new Uri(item.Snippet.Thumbnails.Maxres.Url));
title.Text = item.Snippet.Title;
@@ -107,6 +131,8 @@ namespace FoxTube
elapsedTime.Text = string.Format("{0}{1:00}:{2:00}", elapsed.Hours == 0 ? "" : elapsed.Hours + ":", elapsed.Minutes, elapsed.Seconds);
remainingTime.Text = string.Format("{0}{1:00}:{2:00}", remaining.Hours == 0 ? "" : remaining.Hours + ":", remaining.Minutes, remaining.Seconds);
systemControls.IsNextEnabled = true;
systemControls.IsPauseEnabled = true;
systemControls.IsPlayEnabled = true;
@@ -181,14 +207,16 @@ namespace FoxTube
async void Elapsed()
{
if(!volumePane.IsOpen && !qualityPane.IsOpen)
if(!volumePane.IsOpen && !qualityPane.IsOpen && item.Snippet.LiveBroadcastContent != "upcoming")
{
await controls.Fade().StartAsync();
volumePane.IsOpen = false;
qualityPane.IsOpen = false;
controls.Visibility = Visibility.Collapsed;
/*if(!miniViewed)
touchCentral.Visibility = Visibility.Collapsed;*/
if(!miniViewed)
touchCentral.Visibility = Visibility.Collapsed;
if (pointerCaptured)
Window.Current.CoreWindow.PointerCursor = null;
t.Stop();
}
}
@@ -369,7 +397,10 @@ namespace FoxTube
miniViewed = await ApplicationView.GetForCurrentView().TryEnterViewModeAsync(ApplicationViewMode.CompactOverlay);
mainControls.Visibility = Visibility.Collapsed;
touchCentral.Visibility = Visibility.Visible;
title.Visibility = Visibility.Collapsed;
miniViewExit.Visibility = Visibility.Visible;
header.Visibility = Visibility.Collapsed;
touchBack10.FontSize = touchFwd30.FontSize = 20;
touchPlay.FontSize = 50;
}
else
@@ -377,7 +408,10 @@ namespace FoxTube
miniViewed = !await ApplicationView.GetForCurrentView().TryEnterViewModeAsync(ApplicationViewMode.Default);
mainControls.Visibility = Visibility.Visible;
touchCentral.Visibility = Visibility.Collapsed;
title.Visibility = Visibility.Visible;
miniViewExit.Visibility = Visibility.Collapsed;
header.Visibility = Visibility.Visible;
touchBack10.FontSize = touchFwd30.FontSize = 40;
touchPlay.FontSize = 100;
}
}
@@ -407,8 +441,17 @@ namespace FoxTube
private void UserControl_PointerExited(object sender, PointerRoutedEventArgs e)
{
if (t.Enabled)
if (t.Enabled && e.Pointer.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)
{
pointerCaptured = false;
Elapsed();
}
}
private void UserControl_PointerEntered(object sender, PointerRoutedEventArgs e)
{
if (e.Pointer.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)
pointerCaptured = true;
}
}
}