Example #1
0
        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");
            }
        }
Example #2
0
 private void RootPage_SizeChanged(object sender, SizeChangedEventArgs e)
 {
     CoreTools.HandleItemsWidth(itemGridView);
 }
Example #3
0
 private void MediaPlayerHost_OnVideoPlayerDisengaged()
 {
     VideoPlayerGrid.Visibility = Visibility.Collapsed;
     VideoControls.Visibility   = Visibility.Collapsed;
     CoreTools.ReleaseDisplay();
 }
Example #4
0
 private void MediaPlayerHost_OnVideoPlayerEngaged()
 {
     VideoPlayerGrid.Visibility = Visibility.Visible;
     VideoControls.Visibility   = Visibility.Visible;
     CoreTools.ActivateDisplay();
 }
Example #5
0
 private void RootPage_SizeChanged(object sender, SizeChangedEventArgs e)
 {
     CoreTools.HandleItemsWidth(EpisodesListView);
 }
Example #6
0
        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;
                    }
                }
            });
        }
Example #7
0
        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;
            }
        }