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