Ejemplo n.º 1
0
        public ArchiveTabContent()
        {
            this.InitializeComponent();
            ReaderBackground.SetVisualOpacity(0);
            ScrollViewer.SetVisualOpacity(0);

            Data = DataContext as ArchivePageViewModel;
            Data.ZoomChangedEvent += FitImages;
            Data.RebuildReader    += RebuildReader;

            _loadSemaphore.Wait();

            Service.Events.RebuildReaderImagesSetEvent += RebuildReader;
        }
Ejemplo n.º 2
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;
        }
Ejemplo n.º 3
0
        public async void CloseReader()
        {
            if (_transition)
            {
                return;
            }
            _transition = true;
            var animate = Service.Platform.AnimationsEnabled;
            ConnectedAnimation animLeft = null, animRight = null;

            if (!Data.UseVerticalReader)
            {
                var left  = ReaderImage.FindDescendant("LeftImage");
                var right = ReaderImage.FindDescendant("RightImage");
                ReaderImage.disableAnimation = true;

                if (animate)
                {
                    if (Data.ReaderContent.LeftImage != null && !(left.ActualWidth == 0 || left.ActualHeight == 0))
                    {
                        animLeft = ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("closeL", left);
                        animLeft.Configuration = new BasicConnectedAnimationConfiguration();
                    }
                    if (Data.ReaderContent.RightImage != null && !(right.ActualWidth == 0 || right.ActualHeight == 0))
                    {
                        animRight = ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("closeR", right);
                        animRight.Configuration = new BasicConnectedAnimationConfiguration();
                    }
                }
            }

            _focus = false;
            int currentPage = Data.ReaderContent.Page;
            int count       = Data.Pages;

            int leftTarget  = currentPage;
            int rightTarget = currentPage;

            if (Data.ReaderContent.TwoPages)
            {
                leftTarget--;
                if (Data.ReadRTL)
                {
                    int tmp = leftTarget;
                    leftTarget  = rightTarget;
                    rightTarget = tmp;
                }
            }
            leftTarget  = leftTarget.Clamp(0, count - 1);
            rightTarget = rightTarget.Clamp(0, count - 1);
            if (animate)
            {
                if (Data.ReaderContent.LeftImage != null && animLeft != null && Data.ArchiveImages.Count > leftTarget)
                {
                    animLeft.TryStart(ImagesGrid.ContainerFromIndex(leftTarget).FindDescendant("Thumbnail"));
                }
                if (Data.ReaderContent.RightImage != null & animRight != null && Data.ArchiveImages.Count > rightTarget)
                {
                    animRight.TryStart(ImagesGrid.ContainerFromIndex(rightTarget).FindDescendant("Thumbnail"));
                }
                FadeOut.Start(ReaderBackground);
                await FadeOut.StartAsync(ScrollViewer);

                await Task.Delay(200);                 // Give it a sec
            }
            else
            {
                ReaderBackground.SetVisualOpacity(0);
                ScrollViewer.SetVisualOpacity(0);
            }
            Data.ShowReader = false;

            _wasNew = await Data.SaveReaderData(_wasNew);

            _transition = false;
        }