diff --git a/FoxTube/Classes/SecretsVault.cs b/FoxTube/Classes/SecretsVault.cs
index 80d3519..b090454 100644
--- a/FoxTube/Classes/SecretsVault.cs
+++ b/FoxTube/Classes/SecretsVault.cs
@@ -117,7 +117,7 @@ namespace FoxTube
if (settings.Values["authorized"] == null)
settings.Values.Add("authorized", true);
else settings.Values["authorized"] = true;
- IsAuthorized = true;
+ IsAuthorized = true;
var request = Service.Channels.List("snippet,contentDetails");
request.Mine = true;
diff --git a/FoxTube/Controls/CommentCard.xaml.cs b/FoxTube/Controls/CommentCard.xaml.cs
index 90f24bc..a98aafb 100644
--- a/FoxTube/Controls/CommentCard.xaml.cs
+++ b/FoxTube/Controls/CommentCard.xaml.cs
@@ -72,6 +72,7 @@ namespace FoxTube.Controls
{
var request = SecretsVault.Service.Comments.List("snippet");
request.ParentId = item.Id;
+ request.TextFormat = CommentsResource.ListRequest.TextFormatEnum.PlainText;
request.MaxResults = 10;
var response = await request.ExecuteAsync();
diff --git a/FoxTube/Controls/VideoCard.xaml.cs b/FoxTube/Controls/VideoCard.xaml.cs
index 5c92440..42f8844 100644
--- a/FoxTube/Controls/VideoCard.xaml.cs
+++ b/FoxTube/Controls/VideoCard.xaml.cs
@@ -88,7 +88,7 @@ namespace FoxTube.Controls
}
}
- private async void Button_Click(object sender, RoutedEventArgs e)
+ public async void Button_Click(object sender, RoutedEventArgs e)
{
if (embed)
{
diff --git a/FoxTube/Controls/VideoPlayer.xaml b/FoxTube/Controls/VideoPlayer.xaml
index 91af0c6..43cd94a 100644
--- a/FoxTube/Controls/VideoPlayer.xaml
+++ b/FoxTube/Controls/VideoPlayer.xaml
@@ -66,19 +66,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -100,33 +87,18 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
+
+
-
-
-
-
+
+
@@ -144,13 +116,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -158,17 +130,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -203,13 +164,6 @@
-
-
-
-
-
-
-
diff --git a/FoxTube/Controls/VideoPlayer.xaml.cs b/FoxTube/Controls/VideoPlayer.xaml.cs
index e982330..a1fd165 100644
--- a/FoxTube/Controls/VideoPlayer.xaml.cs
+++ b/FoxTube/Controls/VideoPlayer.xaml.cs
@@ -53,23 +53,13 @@ namespace FoxTube
TimeSpan remaining;
TimeSpan total;
- Google.Apis.YouTube.v3.Data.Video item;
+ Video item;
+ string avatar;
+ double timecodeBackup;
SystemMediaTransportControls systemControls = SystemMediaTransportControls.GetForCurrentView();
- LoadingPage LoadingScreen = new LoadingPage();
- List qualityUris = new List();
- /*YouTubeQuality[] qualities = new YouTubeQuality[8]
- {
- YouTubeQuality.QualityHigh,
- YouTubeQuality.Quality2160P,
- YouTubeQuality.Quality1080P,
- YouTubeQuality.Quality720P,
- YouTubeQuality.Quality480P,
- YouTubeQuality.Quality360P,
- YouTubeQuality.Quality240P,
- YouTubeQuality.Quality144P
- };*/
+ List uris = new List();
ApplicationDataContainer settings = ApplicationData.Current.LocalSettings;
Timer t = new Timer()
@@ -83,47 +73,34 @@ namespace FoxTube
Enabled = true
};
- Timer countdown;
-
public VideoPlayer()
{
this.InitializeComponent();
+ Visibility = Visibility.Collapsed;
if (!ApplicationView.GetForCurrentView().IsViewModeSupported(ApplicationViewMode.CompactOverlay))
- miniView.Visibility = Visibility.Collapsed;
- grid.Children.Add(LoadingScreen);
+ miniView.Visibility = Visibility.Collapsed;;
volume.Value = Convert.ToDouble(settings.Values["volume"]);
-
- var connection = NetworkInformation.GetInternetConnectionProfile().GetConnectionCost();
- if ((bool)settings.Values["moblieWarning"] && (connection.NetworkCostType == NetworkCostType.Fixed || connection.NetworkCostType == NetworkCostType.Variable))
- meteredNotification.Visibility = Visibility.Visible;
- else
- videoSource.AutoPlay = (bool)settings.Values["videoAutoplay"];
+ videoSource.AutoPlay = (bool)settings.Values["videoAutoplay"];
t.Elapsed += T_Elapsed;
seekTimer.Elapsed += SeekTimer_Elapsed;
}
- public async void Initialize(Google.Apis.YouTube.v3.Data.Video meta, string channelAvatar)
+ public async void Initialize(Video meta, string channelAvatar)
{
- LoadingScreen.Visibility = Visibility.Visible;
-
item = meta;
+ avatar = channelAvatar;
videoId = item.Id;
#region Checking qualities availability
- YouTubeUri[] uris = await YouTube.GetUrisAsync(videoId);
- List temp = new List();
+ uris = new List(await YouTube.GetUrisAsync(videoId));
- Rect bounds = ApplicationView.GetForCurrentView().VisibleBounds;
- double scaleFactor = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
- Size size = new Size(bounds.Width * scaleFactor, bounds.Height * scaleFactor);
+ foreach (YouTubeUri i in uris.ToList())
+ if (!i.HasAudio || !i.HasVideo)
+ uris.Remove(i);
foreach (YouTubeUri u in uris)
- if (u.HasVideo && !u.Type.Contains("+mp4a"))
- temp.Add(u);
-
- foreach(YouTubeUri u in uris)
{
Debug.WriteLine("-----------------");
Debug.WriteLine("URI: " + u.Uri);
@@ -134,120 +111,126 @@ namespace FoxTube
Debug.WriteLine("Audio quality: " + u.AudioQuality);
Debug.WriteLine("-----------------");
}
-
- foreach (YouTubeUri u in temp)
- if (u != null)
- Debug.WriteLine(u.VideoQuality);
- else
- Debug.WriteLine("null");
-
- if (temp[0].VideoQuality != YouTubeQuality.Quality2160P)
- {
- temp.Insert(0, null);
- (quality.Items[0] as ComboBoxItem).Visibility = Visibility.Collapsed;
- }
- if (temp[1].VideoQuality != YouTubeQuality.Quality1080P)
- {
- temp.Insert(1, null);
- (quality.Items[1] as ComboBoxItem).Visibility = Visibility.Collapsed;
- }
- if (temp[2].VideoQuality != YouTubeQuality.Quality720P)
- {
- temp.Insert(2, null);
- (quality.Items[2] as ComboBoxItem).Visibility = Visibility.Collapsed;
- }
- if (temp[3].VideoQuality != YouTubeQuality.Quality480P)
- {
- temp.Insert(3, null);
- (quality.Items[3] as ComboBoxItem).Visibility = Visibility.Collapsed;
- }
- if (temp[4].VideoQuality != YouTubeQuality.Quality360P)
- {
- temp.Insert(4, null);
- (quality.Items[4] as ComboBoxItem).Visibility = Visibility.Collapsed;
- }
- if (temp[5].VideoQuality != YouTubeQuality.Quality240P)
- {
- temp.Insert(5, null);
- (quality.Items[5] as ComboBoxItem).Visibility = Visibility.Collapsed;
- }
- qualityUris = temp;
-
- foreach (YouTubeUri u in qualityUris)
- if (u != null)
- Debug.WriteLine(u.VideoQuality);
- else
- Debug.WriteLine("null");
+
+ foreach(YouTubeUri i in uris)
+ switch(i.VideoQuality)
+ {
+ case YouTubeQuality.Quality2160P:
+ (quality.Items[0] as ComboBoxItem).Visibility = Visibility.Visible;
+ break;
+ case YouTubeQuality.Quality1080P:
+ (quality.Items[1] as ComboBoxItem).Visibility = Visibility.Visible;
+ break;
+ case YouTubeQuality.Quality720P:
+ (quality.Items[2] as ComboBoxItem).Visibility = Visibility.Visible;
+ break;
+ case YouTubeQuality.Quality480P:
+ (quality.Items[3] as ComboBoxItem).Visibility = Visibility.Visible;
+ break;
+ case YouTubeQuality.Quality360P:
+ (quality.Items[4] as ComboBoxItem).Visibility = Visibility.Visible;
+ break;
+ case YouTubeQuality.Quality240P:
+ (quality.Items[5] as ComboBoxItem).Visibility = Visibility.Visible;
+ break;
+ case YouTubeQuality.Quality144P:
+ (quality.Items[6] as ComboBoxItem).Visibility = Visibility.Visible;
+ break;
+ }
int k = (int)settings.Values["quality"];
- if (qualityUris[k] == null)
- for (int a = k - 1; a == 0; a--)
- if (qualityUris[a] != null)
- {
- k = a;
- break;
- }
- quality.SelectedIndex = k;
+ switch(k)
+ {
+ case 0:
+ foreach(YouTubeUri i in uris)
+ if(i.VideoQuality == YouTubeQuality.Quality2160P)
+ {
+ quality.SelectedIndex = 0;
+ break;
+ }
+ SetFirstQuality();
+ break;
+ case 1:
+ foreach (YouTubeUri i in uris)
+ if (i.VideoQuality == YouTubeQuality.Quality1080P)
+ {
+ quality.SelectedIndex = 1;
+ break;
+ }
+ SetFirstQuality();
+ break;
+ case 2:
+ foreach (YouTubeUri i in uris)
+ if (i.VideoQuality == YouTubeQuality.Quality720P)
+ {
+ quality.SelectedIndex = 2;
+ break;
+ }
+ SetFirstQuality();
+ break;
+ case 3:
+ foreach (YouTubeUri i in uris)
+ if (i.VideoQuality == YouTubeQuality.Quality480P)
+ {
+ quality.SelectedIndex = 3;
+ break;
+ }
+ SetFirstQuality();
+ break;
+ case 4:
+ foreach (YouTubeUri i in uris)
+ if (i.VideoQuality == YouTubeQuality.Quality360P)
+ {
+ quality.SelectedIndex = 4;
+ break;
+ }
+ SetFirstQuality();
+ break;
+ case 5:
+ foreach (YouTubeUri i in uris)
+ if (i.VideoQuality == YouTubeQuality.Quality240P)
+ {
+ quality.SelectedIndex = 5;
+ break;
+ }
+ SetFirstQuality();
+ break;
+ case 6:
+ foreach (YouTubeUri i in uris)
+ if (i.VideoQuality == YouTubeQuality.Quality144P)
+ {
+ quality.SelectedIndex = 6;
+ break;
+ }
+ SetFirstQuality();
+ break;
+ }
#endregion
- if(item.ContentDetails.ContentRating != null &&
- item.ContentDetails.ContentRating.YtRating == "ytAgeRestricted" &&
- settings.Values["showMature"] == null)
+ if(item.ContentDetails.ContentRating != null)
{
- //TO-DO: insert authentication validation
- 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;
-
- schedulePanel.Visibility = Visibility.Visible;
- if (item.LiveStreamingDetails.ScheduledStartTime != null)
+ if(SecretsVault.IsAuthorized && settings.Values["showMature"] != null)
{
- scheduleStart.Text = "Start time: " + item.LiveStreamingDetails.ScheduledStartTime;
-
- countdown = new Timer()
- {
- Interval = 1000,
- Enabled = true
- };
- countdown.Elapsed += Countdown_Elapsed;
+ Visibility = Visibility.Visible;
+ proceedMature.Visibility = Visibility.Visible;
+ matureBlock.Visibility = Visibility.Visible;
+ return;
}
- else
+ else if(!SecretsVault.IsAuthorized)
{
- scheduleHeader.Visibility = Visibility.Collapsed;
- scheduleStart.Visibility = Visibility.Collapsed;
-
- countdownHeader.Visibility = Visibility.Collapsed;
- streamCountdown.Visibility = Visibility.Collapsed;
- }
- if (item.LiveStreamingDetails.ScheduledEndTime != null)
- scheduleEnd.Text = "End time: " + item.LiveStreamingDetails.ScheduledEndTime;
- else scheduleEnd.Visibility = Visibility.Collapsed;
- try { videoSource.PosterSource = new BitmapImage(new Uri(item.Snippet.Thumbnails.Maxres.Url)); }
- catch { }
- title.Text = item.Snippet.Title;
- return;
+ Visibility = Visibility.Visible;
+ signReq.Visibility = Visibility.Visible;
+ matureBlock.Visibility = Visibility.Visible;
+ return;
+ }
}
try { videoSource.PosterSource = new BitmapImage(new Uri(item.Snippet.Thumbnails.Maxres.Url)); }
catch { }
title.Text = item.Snippet.Title;
channelName.Text = item.Snippet.ChannelTitle;
-
- //videoSource.Source = qualityUris[quality.SelectedIndex].Uri;
+
+ quality_SelectionChanged(this, null);
total = XmlConvert.ToTimeSpan(item.ContentDetails.Duration);
seek.Maximum = total.TotalSeconds;
@@ -255,9 +238,9 @@ namespace FoxTube
elapsed = TimeSpan.FromSeconds(seek.Value);
remaining = total.Subtract(elapsed);
- 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);
-
+ elapsedTime.Text = elapsed.Hours > 0 ? $"{elapsed.Hours}:00:" : "" + $"{elapsed:mm\\:ss}";
+ remainingTime.Text = remaining.Hours > 0 ? $"{remaining.Hours}:00:" : "" + $"{remaining:mm\\:ss}";
+
systemControls.IsNextEnabled = true;
systemControls.IsPauseEnabled = true;
systemControls.IsPlayEnabled = true;
@@ -271,126 +254,38 @@ namespace FoxTube
systemControls.ButtonPressed += SystemControls_Engaged;
t.Start();
- LoadingScreen.Visibility = Visibility.Collapsed;
+
+ Visibility = Visibility.Visible;
}
- private async void Countdown_Elapsed(object sender, ElapsedEventArgs e)
+ void SetFirstQuality()
{
- await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, CountdownElapsed);
- }
-
- void CountdownElapsed()
- {
- TimeSpan span = (TimeSpan)(item.LiveStreamingDetails.ScheduledStartTime - DateTime.Now);
- if (span.TotalMilliseconds > 0)
- streamCountdown.Text = string.Format("{0}{1:00}:{2:00}:{3:00}", span.Days != 0 ? span.Days + ":" : "", span.Hours, span.Minutes, span.Seconds);
- else
+ switch (uris[0].VideoQuality)
{
- streamCountdown.Text = "Stream will be started shortly...";
- countdownHeader.Visibility = Visibility.Collapsed;
+ case YouTubeQuality.Quality2160P:
+ quality.SelectedIndex = 0;
+ break;
+ case YouTubeQuality.Quality1080P:
+ quality.SelectedIndex = 1;
+ break;
+ case YouTubeQuality.Quality720P:
+ quality.SelectedIndex = 2;
+ break;
+ case YouTubeQuality.Quality480P:
+ quality.SelectedIndex = 3;
+ break;
+ case YouTubeQuality.Quality360P:
+ quality.SelectedIndex = 4;
+ break;
+ case YouTubeQuality.Quality240P:
+ quality.SelectedIndex = 5;
+ break;
+ case YouTubeQuality.Quality144P:
+ quality.SelectedIndex = 6;
+ break;
}
}
- async void CheckQualityAvailability(string id)
- {
- YouTubeUri[] uris = await YouTube.GetUrisAsync(id);
- List temp = new List();
-
- Rect bounds = ApplicationView.GetForCurrentView().VisibleBounds;
- double scaleFactor = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
- Size size = new Size(bounds.Width * scaleFactor, bounds.Height * scaleFactor);
-
- foreach (YouTubeUri u in uris)
- if(u.HasVideo && !u.Type.Contains("+mp4a"))
- temp.Add(u);
-
- if(temp[0].VideoQuality != YouTubeQuality.Quality2160P && size.Height >= 2160)
- {
- temp.Insert(0, null);
- (quality.Items[0] as ComboBoxItem).Visibility = Visibility.Collapsed;
- }
- if(temp[1].VideoQuality != YouTubeQuality.Quality1080P && size.Height >= 1080)
- {
- temp.Insert(1, null);
- (quality.Items[1] as ComboBoxItem).Visibility = Visibility.Collapsed;
- }
- if (temp[2].VideoQuality != YouTubeQuality.Quality720P && size.Height >= 720)
- {
- temp.Insert(2, null);
- (quality.Items[2] as ComboBoxItem).Visibility = Visibility.Collapsed;
- }
- if (temp[3].VideoQuality != YouTubeQuality.Quality480P && size.Height >= 480)
- {
- temp.Insert(3, null);
- (quality.Items[3] as ComboBoxItem).Visibility = Visibility.Collapsed;
- }
- if (temp[4].VideoQuality != YouTubeQuality.Quality360P && size.Height >= 360)
- {
- temp.Insert(4, null);
- (quality.Items[4] as ComboBoxItem).Visibility = Visibility.Collapsed;
- }
- if (temp[5].VideoQuality != YouTubeQuality.Quality240P)
- {
- temp.Insert(5, null);
- (quality.Items[5] as ComboBoxItem).Visibility = Visibility.Collapsed;
- }
- qualityUris = temp;
-
- foreach (YouTubeUri u in qualityUris)
- Debug.WriteLine(u.VideoQuality);
-
- int k = (int)settings.Values["quality"];
- if(qualityUris[k] == null)
- for(int a = k - 1; a == 0; a--)
- if (qualityUris[a] != null)
- {
- k = a;
- break;
- }
- quality.SelectedIndex = k;
-
- /*YouTubeUri[] ytu = await YouTube.GetUrisAsync(id);
- foreach (YouTubeUri uri in ytu)
- {
- Debug.WriteLine("URI: " + uri.Uri);
- Debug.WriteLine("Has video: " + uri.HasVideo);
- Debug.WriteLine("Type: " + uri.Type);
- Debug.WriteLine("Video quality: " + uri.VideoQuality);
- Debug.WriteLine("------------------------------------");
- }
- throw new Exception();
- List uris = new List();
-
- for (int i = 0; i < uris.Count; i++)
- if (!uris[i].HasAudio)
- uris.RemoveAt(i);
-
- for (int i = 0; i < 8; i++)
- try
- {
- YouTubeUri uri = await YouTube.GetVideoUriAsync(id, qualities[i]);
- Debug.WriteLine(qualities[i].ToString() + ": Checked");
- Debug.WriteLine("Result URI: " + uri.Uri);
- }
- catch
- {
- (quality.Items[i] as ComboBoxItem).Visibility = Visibility.Collapsed;
- Debug.WriteLine(qualities[i].ToString() + ": Error");
- }
-
- int k = (int)settings.Values["quality"];
- if ((quality.Items[k] as ComboBoxItem).Visibility == Visibility.Collapsed)
- for (int i = 7; i >= 0; i--)
- {
- if ((quality.Items[i] as ComboBoxItem).Visibility == Visibility.Visible)
- {
- quality.SelectedIndex = i;
- break;
- }
- }
- else quality.SelectedIndex = k;*/
- }
-
private void SystemControls_Engaged(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs args)
{
switch (args.Button)
@@ -425,11 +320,8 @@ namespace FoxTube
void Elapsed()
{
- if(!volumePane.IsOpen && !qualityPane.IsOpen && item.Snippet.LiveBroadcastContent != "upcoming")
+ if(!volumePane.IsOpen && !qualityPane.IsOpen && !subsPane.IsOpen)
{
- //await controls.Fade().StartAsync();
- volumePane.IsOpen = false;
- qualityPane.IsOpen = false;
controls.Visibility = Visibility.Collapsed;
if(!miniViewed)
touchCentral.Visibility = Visibility.Collapsed;
@@ -443,10 +335,10 @@ namespace FoxTube
{
if(miniViewed)
{
- Height = Window.Current.Bounds.Height;
+ Height = Width * (videoSource.NaturalVideoHeight / videoSource.NaturalVideoWidth);
+ ApplicationView.GetForCurrentView().TryResizeView(new Size(Width, Height));
Debug.WriteLine("Video player aspect ratio has been corrected.");
}
- //Height = e.NewSize.Width / 16 * 9;
}
private void openVolume_Click(object sender, RoutedEventArgs e)
@@ -518,7 +410,6 @@ namespace FoxTube
if(controls.Visibility == Visibility.Collapsed)
{
controls.Visibility = Visibility.Visible;
- //await controls.Fade(value: 1).StartAsync();
}
if (pointerCaptured)
Window.Current.CoreWindow.PointerCursor = cursorBackup;
@@ -528,18 +419,88 @@ namespace FoxTube
private void quality_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
- if(videoSource.Source != null)
+ if(uris.Count > 0)
{
videoSource.Pause();
- TimeSpan timecode = videoSource.Position;
+ timecodeBackup = videoSource.Position.TotalSeconds;
- videoSource.Source = qualityUris[quality.SelectedIndex].Uri;
+ switch(quality.SelectedIndex)
+ {
+ case 0:
+ foreach (YouTubeUri i in uris)
+ if (i.VideoQuality == YouTubeQuality.Quality2160P)
+ {
+ videoSource.Source = i.Uri;
+ break;
+ }
+ break;
+ case 1:
+ foreach (YouTubeUri i in uris)
+ if (i.VideoQuality == YouTubeQuality.Quality1080P)
+ {
+ videoSource.Source = i.Uri;
+ break;
+ }
+ break;
+ case 2:
+ foreach (YouTubeUri i in uris)
+ if (i.VideoQuality == YouTubeQuality.Quality720P)
+ {
+ videoSource.Source = i.Uri;
+ break;
+ }
+ break;
+ case 3:
+ foreach (YouTubeUri i in uris)
+ if (i.VideoQuality == YouTubeQuality.Quality480P)
+ {
+ videoSource.Source = i.Uri;
+ break;
+ }
+ break;
+ case 4:
+ foreach (YouTubeUri i in uris)
+ if (i.VideoQuality == YouTubeQuality.Quality360P)
+ {
+ videoSource.Source = i.Uri;
+ break;
+ }
+ break;
+ case 5:
+ foreach (YouTubeUri i in uris)
+ if (i.VideoQuality == YouTubeQuality.Quality240P)
+ {
+ videoSource.Source = i.Uri;
+ break;
+ }
+ break;
+ case 6:
+ foreach (YouTubeUri i in uris)
+ if (i.VideoQuality == YouTubeQuality.Quality144P)
+ {
+ videoSource.Source = i.Uri;
+ break;
+ }
+ break;
+ }
- videoSource.Position = timecode;
videoSource.Play();
+
+ Timer timer = new Timer(1000);
+ timer.Elapsed += Timer_Elapsed;
+ timer.Start();
}
}
+ private async void Timer_Elapsed(object sender, ElapsedEventArgs e)
+ {
+ await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
+ {
+ (sender as Timer).Stop();
+ videoSource.Position = TimeSpan.FromSeconds(timecodeBackup);
+ });
+ }
+
private void subsSwitch_Toggled(object sender, RoutedEventArgs e)
{
@@ -620,11 +581,6 @@ namespace FoxTube
}
}
- private void meteredDismiss_Click(object sender, RoutedEventArgs e)
- {
- meteredNotification.Visibility = Visibility.Collapsed;
- }
-
private async void miniView_Click(object sender, RoutedEventArgs e)
{
ApplicationViewTitleBar titleBar = ApplicationView.GetForCurrentView().TitleBar;
@@ -687,8 +643,8 @@ namespace FoxTube
elapsed = TimeSpan.FromSeconds(seek.Value);
remaining = total.Subtract(elapsed);
- 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);
+ elapsedTime.Text = elapsed.Hours > 0 ? $"{elapsed.Hours}:00:" : "" + $"{elapsed:mm\\:ss}";
+ remainingTime.Text = remaining.Hours > 0 ? $"{remaining.Hours}:00:" : "" + $"{remaining:mm\\:ss}";
}
private void seek_PointerCaptureLost(object sender, PointerRoutedEventArgs e)
@@ -731,6 +687,7 @@ namespace FoxTube
if ((bool)matureDisable.IsChecked)
settings.Values.Add("showMature", false);
matureBlock.Visibility = Visibility.Collapsed;
+ Initialize(item, avatar);
}
private void signin_Click(object sender, RoutedEventArgs e)
diff --git a/FoxTube/Pages/MainPage.xaml.cs b/FoxTube/Pages/MainPage.xaml.cs
index a08ec6e..d1d3777 100644
--- a/FoxTube/Pages/MainPage.xaml.cs
+++ b/FoxTube/Pages/MainPage.xaml.cs
@@ -186,6 +186,9 @@ namespace FoxTube
content.CacheSize = 0;
content.Navigate(typeof(Home));
+
+ if (videoPlaceholder.Content != null)
+ (videoPlaceholder.Content as VideoPage).refresh_Click(this, null);
}
protected override void OnNavigatedTo(NavigationEventArgs e)
@@ -504,6 +507,7 @@ namespace FoxTube
{
(videoPlaceholder.Content as VideoPage).player.minimize_Click(this, null);
}
+ catch { }
}
public void MinimizeVideo()
diff --git a/FoxTube/Pages/VideoPage.xaml.cs b/FoxTube/Pages/VideoPage.xaml.cs
index 4ee1671..9ea6920 100644
--- a/FoxTube/Pages/VideoPage.xaml.cs
+++ b/FoxTube/Pages/VideoPage.xaml.cs
@@ -67,6 +67,7 @@ namespace FoxTube.Pages
loading.RefreshPage += refresh_Click;
player = mainContent.Children[0] as VideoPlayer;
player.SetFullSize += Player_SetFullSize;
+ player.NextClicked += Player_NextClicked;
comments = commentsPlaceholder.Content as CommentsPage;
DataTransferManager.GetForCurrentView().DataRequested += new TypedEventHandler(Share);
@@ -91,6 +92,11 @@ namespace FoxTube.Pages
}
}
+ private void Player_NextClicked(object sender, EventArgs e)
+ {
+ (relatedVideos.Children[0] as VideoCard).Button_Click(this, null);
+ }
+
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
@@ -271,7 +277,7 @@ namespace FoxTube.Pages
await Launcher.LaunchUriAsync(new Uri($"https://www.youtube.com/watch?v={videoId}{timecode}"));
}
- private void refresh_Click(object sender, RoutedEventArgs e)
+ public void refresh_Click(object sender, RoutedEventArgs e)
{
player = new VideoPlayer();
Initialize(videoId);