Video player development 2
This commit is contained in:
+20
-13
@@ -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="" 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="" 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="" 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="" 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="50" 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="touchBack10" Click="back10_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="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="" 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"/>
|
||||
|
||||
<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"/>
|
||||
</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="Full screen" Name="fullscreen" Click="fullscreen_Click"/>
|
||||
</StackPanel>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user