private static async void PlaybackList_CurrentItemChanged(MediaPlaybackList sender, CurrentMediaPlaybackItemChangedEventArgs args) { try { if (args.NewItem == null) { return; } var currentItem = sender.CurrentItem; if (currentItem == null) { return; } CheckPlaylistState(sender); syncedItem = playbackList.CurrentItem; RestorePosition(); Debug.WriteLine("Switched to episode#" + CurrentEntry.Episode.Title); if (currentItem.Source.Duration.HasValue) { CurrentEntry.Duration = currentItem.Source.Duration.Value.TotalSeconds; } else { CurrentEntry.Duration = 0; } if (LocalSettings.Instance.VideoPlayback && args.NewItem.VideoTracks.Count > 0) { videoPlayInProgess = true; RaiseVideoPlayerEngaged(); } else if (videoPlayInProgess) { videoPlayInProgess = false; RaiseVideoPlayerDisengaged(); } // Playback rate try { Player.PlaybackSession.PlaybackRate = LocalSettings.Instance.PlaySpeed / 100.0; } catch (Exception) { LocalSettings.Instance.PlaySpeed = 100; } if (!(Application.Current as App).IsInBackground && CurrentEntry != null && CurrentEntry.IsStreaming && NetworkHelper.Instance.ConnectionInformation.IsInternetAvailable && NetworkHelper.Instance.ConnectionInformation.IsInternetOnMeteredConnection && !LocalSettings.Instance.StreamOnMetered) { await DispatchManager.RunOnDispatcherAsync(async() => { Pause(false); await App.MessageAsync(StringsHelper.StreamingIsDisabled); }); } SyncState(Player.PlaybackSession.PlaybackState); } catch (Exception ex) { App.TrackException(ex); CoreTools.ShowDebugToast(ex.Message, "PlaybackList_CurrentItemChanged"); } }
private void RootPage_SizeChanged(object sender, SizeChangedEventArgs e) { CoreTools.HandleItemsWidth(itemGridView); }
private void MediaPlayerHost_OnVideoPlayerDisengaged() { VideoPlayerGrid.Visibility = Visibility.Collapsed; VideoControls.Visibility = Visibility.Collapsed; CoreTools.ReleaseDisplay(); }
private void MediaPlayerHost_OnVideoPlayerEngaged() { VideoPlayerGrid.Visibility = Visibility.Visible; VideoControls.Visibility = Visibility.Visible; CoreTools.ActivateDisplay(); }
private void RootPage_SizeChanged(object sender, SizeChangedEventArgs e) { CoreTools.HandleItemsWidth(EpisodesListView); }
public async void GetLocalImage() { if (!IsInLibrary) { LocalImage = Image; RaisePropertyChanged(nameof(LocalImage)); return; } await Task.Run(async() => { lock (this) { if (imageDownloadInProgress) { return; } imageDownloadInProgress = true; } try { if (LocalImage != null) { return; } if (string.IsNullOrEmpty(Image)) { LocalImage = "ms-appx:///Assets/IconFull.png"; RaisePropertyChanged(nameof(LocalImage)); return; } var questionMarkPosition = Image.IndexOf("?", StringComparison.Ordinal); var imageFile = Path.Combine(Root, questionMarkPosition == -1 ? Path.GetFileName(Image) : Path.GetFileName(Image.Substring(0, questionMarkPosition))); if (!await FileHelper.IsLocalFileExistsAsync(imageFile, false)) { if (!await CoreTools.DownloadDirectToFile(Image, imageFile, false)) { LocalImage = "ms-appx:///Assets/IconFull.png"; RaisePropertyChanged(nameof(LocalImage)); return; } } if (string.IsNullOrEmpty(LocalImage)) { LocalImage = "ms-appdata:///local/" + imageFile; RaisePropertyChanged(nameof(LocalImage)); } } catch { // Ignore error LocalImage = "ms-appx:///Assets/IconFull.png"; RaisePropertyChanged(nameof(LocalImage)); } finally { lock (this) { imageDownloadInProgress = false; } } }); }
private async void Page_Loaded(object sender, RoutedEventArgs e) { var version = Package.Current.Id.Version; if (version.StringVersion() != LocalSettings.Instance.CurrentVersion) { Logo.Visibility = Visibility.Collapsed; LogoBis.Visibility = Visibility.Visible; LogoBis.MaxWidth = Logo.Width; // What's new Version.Text = $"{StringsHelper.About}{version.StringVersion()}"; var file = await CoreTools.GetWhatsNewFileAsync(); Whatsnew.Visibility = Visibility.Visible; var news = await FileIO.ReadLinesAsync(file); var first = true; foreach (var s in news) { if (!first) { var line = new Rectangle { HorizontalAlignment = HorizontalAlignment.Stretch, Height = 1, Margin = new Thickness(10, 5, 10, 5), Stroke = new SolidColorBrush(Colors.White), Opacity = 0.5 }; WhatsNewPanel.Children.Add(line); } first = false; var textblock = new TextBlock { Text = s, FontSize = 18, HorizontalAlignment = HorizontalAlignment.Center, FontWeight = Windows.UI.Text.FontWeights.ExtraLight, Foreground = new SolidColorBrush(Colors.White), Margin = new Thickness(5), TextWrapping = TextWrapping.WrapWholeWords }; WhatsNewPanel.Children.Add(textblock); } GotIt.Opacity = 0; } // Background task try { var backgroundAccessStatus = await BackgroundExecutionManager.RequestAccessAsync(); if (backgroundAccessStatus == BackgroundAccessStatus.AlwaysAllowed || backgroundAccessStatus == BackgroundAccessStatus.AllowedSubjectToSystemPolicy) { var taskName = "BackgroundTask.RefreshTask"; var taskRegistered = BackgroundTaskRegistration.AllTasks.Any(task => task.Value.Name == taskName); if (!taskRegistered) { var builder = new BackgroundTaskBuilder { Name = taskName, TaskEntryPoint = "BackgroundTask.RefreshTask" }; builder.SetTrigger(new TimeTrigger(60, false)); builder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable)); builder.Register(); } } } catch { // Ignore } var kind = (Application.Current as App).SavedArgs.Kind; StatusText.Text = StringsHelper.ParsingMessage; await Library.DeserializeAsync(); LocalSettings.Instance.NewEpisodesCount = 0; StatusText.Text = ""; // Shell shell = await App.CreateShellFrameAsync(); if (Whatsnew.Visibility != Visibility.Visible) { App.EnableShell(shell); shell = null; } else { WaitRing.Visibility = Visibility.Collapsed; PleaseWait.Opacity = 0; GotIt.Opacity = 1.0; } }