예제 #1
0
        private async void ScrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
        {
            if (e.IsIntermediate)
            {
                return;
            }
            // Use width instead of height in vertical mode
            if (Data.UseVerticalReader)
            {
                if (ScrollViewer.CurrentAnchor is ReaderImage image)
                {
                    var index = ReaderVertical.GetElementIndex(ScrollViewer.CurrentAnchor);
                    Data.ReaderIndex = index;

                    var width = (int)Math.Round(ScrollViewer.ExtentWidth);
                    await image.ResizeWidth(width);

                    (ReaderVertical.TryGetElement(index + 1) as ReaderImage)?.ResizeWidth(width);
                    (ReaderVertical.TryGetElement(index + 2) as ReaderImage)?.ResizeWidth(width);
                }
            }
            else
            {
                await ReaderImage.ResizeHeight((int)Math.Round(ScrollViewer.ExtentHeight));
            }
        }
예제 #2
0
        private async Task ShowReader(int page = 0)
        {
            if (Data.ShowReader)
            {
                var readerSet = Data.ArchiveImagesReader.FirstOrDefault(s => s.Page >= page);
                if (readerSet == null)
                {
                    return;
                }
                var index = Data.ArchiveImagesReader.IndexOf(readerSet);
                Data.ReaderIndex = index;

                if (Data.UseVerticalReader)
                {
                    await Task.Delay(100);

                    var element = ReaderVertical.GetOrCreateElement(index);
                    element.UpdateLayout();
                    element.StartBringIntoView(new BringIntoViewOptions {
                        AnimationDesired = false, VerticalAlignmentRatio = 0f
                    });
                }
                else
                {
                    await ChangePage();
                }

                if (Service.Platform.AnimationsEnabled)
                {
                    await FadeIn.StartAsync(ScrollViewer);
                }
                else
                {
                    ScrollViewer.SetVisualOpacity(1);
                }
                FocusReader();
            }
            else
            {
                if (Service.Platform.AnimationsEnabled)
                {
                    await ImagesGrid.FadeInAsync();
                }
                else
                {
                    ImagesGrid.SetVisualOpacity(1);
                }
            }
        }
예제 #3
0
        private async void OpenReader(int page, object item = null)
        {
            if (_transition)
            {
                return;
            }
            _transition = true;
            var readerSet = Data.ArchiveImagesReader.FirstOrDefault(s => s.Page >= page);

            if (readerSet == null)
            {
                return;
            }
            var index = Data.ArchiveImagesReader.IndexOf(readerSet);

            if (Service.Platform.AnimationsEnabled && item != null && !Data.UseVerticalReader)
            {
                var image = ImagesGrid.ContainerFromItem(item).FindDescendant("Thumbnail");
                if (!(image.ActualWidth == 0 || image.ActualHeight == 0))
                {
                    var anim = ConnectedAnimationService.GetForCurrentView().PrepareToAnimate(GetOpenTarget(readerSet, page), image);
                    anim.Configuration = new BasicConnectedAnimationConfiguration();
                }
            }

            Data.ShowReader  = true;
            Data.ReaderIndex = index;
            if (Data.UseVerticalReader)
            {
                await Task.Delay(100);

                var element = ReaderVertical.GetOrCreateElement(index);
                element.UpdateLayout();
                element.StartBringIntoView(new BringIntoViewOptions {
                    AnimationDesired = false, VerticalAlignmentRatio = 0f
                });
            }
            else
            {
                await ChangePage();
            }

            if (Data.Archive.isnew)
            {
                _wasNew = true;
            }
            if (Service.Platform.AnimationsEnabled)
            {
                FadeIn.Start(ReaderBackground);
                await FadeIn.StartAsync(ScrollViewer);
            }
            else
            {
                ReaderBackground.SetVisualOpacity(1);
                ScrollViewer.SetVisualOpacity(1);
            }

            _focus = true;
            FocusReader();
            _transition = false;
        }