Exemple #1
0
        private IPageAnimation GetPageAnimanition(NavigationAnimation animation)
        {
            switch (animation)
            {
            case NavigationAnimation.SlideTopToBottom:
                return(new SlidePageAnimation()
                {
                    Duration = AnimationDuration.Short, Type = AnimationType.Slide, Subtype = AnimationSubtype.FromTop
                });

            case NavigationAnimation.SlideBottomToTop:
                return(new SlidePageAnimation()
                {
                    Duration = AnimationDuration.Short, Type = AnimationType.Slide, Subtype = AnimationSubtype.FromBottom
                });

            case NavigationAnimation.SlideLeftToRight:
                return(new SlidePageAnimation()
                {
                    Duration = AnimationDuration.Short, Type = AnimationType.Slide, Subtype = AnimationSubtype.FromRight
                });

            case NavigationAnimation.SlideRightToLeft:
                return(new SlidePageAnimation()
                {
                    Duration = AnimationDuration.Short, Type = AnimationType.Slide, Subtype = AnimationSubtype.FromLeft
                });

            default:
                return(null);
            }
        }
Exemple #2
0
 public async Task NavigateToViewModelAsync(IViewModel viewModel, NavigationAnimation animation, Color?color = null, bool animated = false, bool modal = false)
 {
     try
     {
         AnimationPage targetPage = _pageLocator.ResolvePage(viewModel);
         if (targetPage != null)
         {
             if (animation != NavigationAnimation.None)
             {
                 targetPage.PageAnimation = GetPageAnimanition(animation);
                 animated = true;
             }
             SetBarBackgroundColor(targetPage, color ?? Color.Default);
             SetStatusBarColor(color ?? Color.Default);
             if (!modal)
             {
                 await Navigator.PushAsync(targetPage, animated);
             }
             else
             {
                 await Navigator.PushModalAsync(targetPage, animated);
             }
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
         throw;
     }
 }
Exemple #3
0
        public void NavigateToExitServerSelection(NavigationAnimation animation)
        {
            __MainWindowController.ServerListViewModel.SetSelectedServer(__MainWindowController.MainViewModel.SelectedExitServer, ServerSelectionType.ExitServer);

            __MainWindowController.ShowServersPage(animation);
            CurrentPage = NavigationTarget.ServerSelection;
        }
        public void NavigateToSessionLimitPage(NavigationAnimation animation)
        {
            navigate(() =>
            {
                // firewall should be disabled on LogIn page
                __MainWindowController.MainViewModel.ForceDisconnectAndDisableFirewall();

                // if user is authenticated - do the LogOut first
                if (__MainWindowController.AppState.IsLoggedIn())
                {
                    if (CurrentPage == NavigationTarget.LogOutPage)
                    {
                        return;
                    }
                    __MainWindowController.ShowLogOutPage(animation, showSessionLimit: true);
                    CurrentPage = NavigationTarget.LogOutPage;
                }
                else
                {
                    if (CurrentPage == NavigationTarget.SessionLimitPage)
                    {
                        return;
                    }
                    __MainWindowController.ShowSessionLimitPage(animation);
                    CurrentPage = NavigationTarget.SessionLimitPage;
                }
            });
        }
Exemple #5
0
 public async Task PopModalAsync(NavigationAnimation animation, bool animated = false)
 {
     if (Navigator.ModalStack.Count > 0)
     {
         await Navigator.PopModalAsync(animated);
     }
 }
Exemple #6
0
        public void NavigateToLogInPage(NavigationAnimation animation, bool doLogIn = false, bool doForceLogin = false)
        {
            // firewall should be disabled on LogIn page
            __MainWindowController.MainViewModel.ForceDisconnectAndDisableFirewall();

            __MainWindowController.ShowLogInPage(animation, doLogIn, doForceLogin);
            CurrentPage = NavigationTarget.LogInPage;
        }
Exemple #7
0
        public void ShowMainPage(NavigationAnimation animation)
        {
            // update account menu item
            App.UpdateTrayMenuItems(AppState, MainViewModel);
            // Hide 'Back' button on window title
            HideBackButton();
            // Show title
            Title = StringUtils.String("Title", "IVPN");

            AnimatedNavigate(DocumentFrame, animation);
        }
Exemple #8
0
        public void NavigateToMainPage(NavigationAnimation animation)
        {
            // Avoid enter Main page when we are logging-out. Can happen on startup (on first check of session status) when session was deleted from API server.
            // TODO: bad architecture.
            if (CurrentPage == NavigationTarget.LogOutPage)
            {
                return;
            }

            __MainWindowController.ShowMainPage(animation);
            CurrentPage = NavigationTarget.MainPage;
        }
 public void NavigateToInitPage(NavigationAnimation animation)
 {
     navigate(() =>
     {
         if (CurrentPage == NavigationTarget.InitPage)
         {
             return;
         }
         __MainWindowController.ShowInitPage(animation);
         CurrentPage = NavigationTarget.InitPage;
     });
 }
 public void NavigateToAutomaticServerConfiguration(NavigationAnimation animation = NavigationAnimation.FadeToLeft)
 {
     navigate(() =>
     {
         if (CurrentPage == NavigationTarget.AutomaticServerConfiguration)
         {
             return;
         }
         __MainWindowController.ShowFastestServerConfiguration(animation);
         CurrentPage = NavigationTarget.AutomaticServerConfiguration;
     });
 }
Exemple #11
0
 public void NavigateToLogOutPage(NavigationAnimation animation)
 {
     try
     {
         __MainWindowController.ShowLogOutPage(animation);
         CurrentPage = NavigationTarget.LogOutPage;
     }
     catch
     {
         NavigateToLogInPage(NavigationAnimation.FadeToRight);
         CurrentPage = NavigationTarget.LogInPage;
     }
 }
        public void NavigateToEntryServerSelection(NavigationAnimation animation)
        {
            navigate(() =>
            {
                __MainWindowController.ServerListViewModel.SetSelectedServer(__MainWindowController.MainViewModel.SelectedServer, ServerSelectionType.EntryServer);

                if (CurrentPage == NavigationTarget.ServerSelection)
                {
                    return;
                }
                __MainWindowController.ShowServersPage(animation);
                CurrentPage = NavigationTarget.ServerSelection;
            });
        }
Exemple #13
0
        public void NavigateToServerSelection(NavigationAnimation animation)
        {
            if (__MainWindowController.MainViewModel.IsAutomaticServerSelection)
            {
                __MainWindowController.ServerListViewModel.SetAutomaticServerSelection(ServerSelectionType.SingleServer);
            }
            else
            {
                __MainWindowController.ServerListViewModel.SetSelectedServer(__MainWindowController.MainViewModel.SelectedServer, ServerSelectionType.SingleServer);
            }

            __MainWindowController.ShowServersPage(animation);
            CurrentPage = NavigationTarget.ServerSelection;
        }
Exemple #14
0
        public void ShowServersPage(NavigationAnimation animation)
        {
            double height = DocumentFrame.ActualHeight;

            if (height <= 0)
            {
                height = FastestServerConfigFrame.ActualHeight;
            }
            ServersFrame.Height = height;

            AnimatedNavigate(ServersFrame, animation, () =>
            {
                ShowBackButton();
                ServerListViewModel.Navigated();
            });
        }
        internal void NavigateDocumentPage(NavigationAnimation navigationAnimation, Page newPage)
        {
            p_Document pageDocument = DocumentFrame.Content as p_Document;

            if (pageDocument == null)
            {
                throw new Exception("Main page needs to be p_Document object");
            }

            p_DocumentMenu documentMenu = pageDocument.DocumentFrame.Content as p_DocumentMenu;

            if (documentMenu == null)
            {
                throw new Exception("Document page cannot be found");
            }

            AnimatedNavigate(documentMenu.DocumentPageFrame, newPage, navigationAnimation);
        }
Exemple #16
0
        public AnimationNavigationPage SetMainPage(Type targetType, NavigationAnimation animation, Color?color = null, object args = null)
        {
            try
            {
                var page = _pageLocator.ResolvePageAndViewModel(targetType, args);
                if (animation != NavigationAnimation.None)
                {
                    page.PageAnimation = GetPageAnimanition(animation);
                }
                _navigationPage = new AnimationNavigationPage(page);
                SetBarBackgroundColor(_navigationPage, color ?? Color.Default);
                SetStatusBarColor(color ?? Color.Default);

                return(_navigationPage);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
        public void ShowMainPage(NavigationAnimation animation)
        {
            // run only on main UI thread
            if (Application.Current.Dispatcher.Thread != Thread.CurrentThread)
            {
                Application.Current.Dispatcher.Invoke(() =>
                {
                    ShowMainPage(animation);
                });
                return;
            }

            // update account menu item
            App.UpdateTrayMenuItems(AppState, MainViewModel);
            // Hide 'Back' button on window title
            HideBackButton();
            // Show title
            Title = StringUtils.String("Title", "IVPN");

            AnimatedNavigate(DocumentFrame, animation);
        }
        public void NavigateToLogOutPage(NavigationAnimation animation)
        {
            navigate(() =>
            {
                if (CurrentPage == NavigationTarget.LogOutPage || CurrentPage == NavigationTarget.LogInPage)
                {
                    return;
                }

                try
                {
                    __MainWindowController.ShowLogOutPage(animation);
                    CurrentPage = NavigationTarget.LogOutPage;
                }
                catch
                {
                    NavigateToLogInPage(NavigationAnimation.FadeToRight);
                    CurrentPage = NavigationTarget.LogInPage;
                }
            });
        }
Exemple #19
0
        public void ShowLogInPage(NavigationAnimation animation, bool doLogIn = false, bool doForceLogin = false)
        {
            // update account menu item
            App.UpdateTrayMenuItems(AppState, MainViewModel);

            Action onComplete = null;

            if (doLogIn)
            {
                onComplete = new Action(() => {
                    if (doForceLogin)
                    {
                        LogInViewModel.LogInAndDeleteAllSessionsCommand.Execute(null);
                    }
                    else
                    {
                        LogInViewModel.LogInCommand.Execute(null);
                    }
                });
            }

            AnimatedNavigate(LoginFrame, animation, onComplete);
        }
        private async void GoBack_Cmd(object sender, ExecutedRoutedEventArgs e)
        {
            if (__NavigationStack.Count == 0)
            {
                return;
            }

            if (__NavigationStack.Count == 1)
            {
                await CloseProject();

                return;
            }

            var navigationItem = __NavigationStack.Pop();

            NavigationAnimation animation = NavigationAnimation.FadeToRight;

            if (navigationItem.Animation == NavigationAnimation.FadeUp)
            {
                animation = NavigationAnimation.FadeDown;
            }
            if (navigationItem.Animation == NavigationAnimation.FadeDown)
            {
                animation = NavigationAnimation.FadeUp;
            }
            if (navigationItem.Animation == NavigationAnimation.FadeToLeft)
            {
                animation = NavigationAnimation.FadeToRight;
            }
            if (navigationItem.Animation == NavigationAnimation.FadeToRight)
            {
                animation = NavigationAnimation.FadeToLeft;
            }

            AnimatedNavigate(navigationItem.Frame, navigationItem.Content as Page, animation, false);
        }
Exemple #21
0
 public void ShowFastestServerConfiguration(NavigationAnimation animation)
 {
     FastestServerConfigFrame.Height = ServersFrame.ActualHeight;
     AnimatedNavigate(FastestServerConfigFrame, animation, ShowBackButton);
 }
Exemple #22
0
 public void ShowInitPage(NavigationAnimation animation)
 {
     AnimatedNavigate(InitializationFrame, animation);
 }
Exemple #23
0
 public void ShowSingUpPage(NavigationAnimation animation)
 {
     OpenUrl(Constants.GetSignUpUrl());
 }
Exemple #24
0
 public void ShowSessionLimitPage(NavigationAnimation animation)
 {
     AnimatedNavigate(SessionLimitFrame, animation);
 }
        public void AnimatedNavigate(Frame targetFrame,
                                     Page newPage, NavigationAnimation navigationAnimation = NavigationAnimation.FadeToLeft, bool addToStack = true)
        {
            //var newFrame = CloneFrame(targetFrame);

            if (addToStack)
            {
                __NavigationStack.Push(
                    new NavigationStackItem(targetFrame, targetFrame.Content, navigationAnimation));
            }

            targetFrame.Content = newPage;

            //__TransitionTargetFrame = targetFrame;
            //__TransitionNewFrame = newFrame;

            double frameWidth  = targetFrame.ActualWidth;
            double frameHeight = targetFrame.ActualHeight;

            TranslateTransform newFrameTransform = new TranslateTransform();

            DoubleAnimation newFrameAnimation = new DoubleAnimation();

            newFrameAnimation.AccelerationRatio = 1;

            newFrameAnimation.Completed += new EventHandler(AnimationCompleted);
            newFrameAnimation.Duration   = new Duration(TimeSpan.FromSeconds(TRANSITION_TIME));

            TranslateTransform targetFrameTransform = new TranslateTransform();
            DoubleAnimation    targetFrameAnimation = new DoubleAnimation();

            targetFrameAnimation.Duration = new Duration(TimeSpan.FromSeconds(TRANSITION_TIME));

            targetFrameAnimation.DecelerationRatio = 1;

            int animationLength;

            if (navigationAnimation == NavigationAnimation.FadeToLeft || navigationAnimation == NavigationAnimation.FadeToRight)
            {
                animationLength = 20;//(int)(frameWidth * ANIMATION_DISTANCE);
            }
            else
            {
                animationLength = 20;// (int)(frameHeight * ANIMATION_DISTANCE);
            }
            if (navigationAnimation == NavigationAnimation.FadeToLeft || navigationAnimation == NavigationAnimation.FadeUp)
            {
                newFrameAnimation.From    = 0;
                newFrameAnimation.To      = -animationLength;
                targetFrameAnimation.From = animationLength;
                targetFrameAnimation.To   = 0;
            }
            else
            {
                newFrameAnimation.From = 0;
                newFrameAnimation.To   = animationLength;

                targetFrameAnimation.From = -animationLength;
                targetFrameAnimation.To   = 0;
            }


            DoubleAnimation opacityAnimation = new DoubleAnimation();

            opacityAnimation.Duration = new Duration(TimeSpan.FromSeconds(TRANSITION_TIME));
            opacityAnimation.From     = 1;
            opacityAnimation.To       = 0;

            DoubleAnimation opacityAnimation2 = new DoubleAnimation();

            opacityAnimation2.Duration = new Duration(TimeSpan.FromSeconds(TRANSITION_TIME / 2));
            opacityAnimation2.From     = 0;
            //opacityAnimation2.DecelerationRatio = 1;
            opacityAnimation2.To = 1;

            //newFrame.RenderTransform = newFrameTransform;
            targetFrame.RenderTransform = targetFrameTransform;
            //newFrame.BeginAnimation(Frame.OpacityProperty, opacityAnimation);
            targetFrame.BeginAnimation(Frame.OpacityProperty, opacityAnimation2);

            DependencyProperty translationProperty;

            if (navigationAnimation == NavigationAnimation.FadeToLeft || navigationAnimation == NavigationAnimation.FadeToRight)
            {
                translationProperty = TranslateTransform.XProperty;
            }
            else
            {
                translationProperty = TranslateTransform.YProperty;
            }

            newFrameTransform.BeginAnimation(translationProperty, newFrameAnimation);
            targetFrameTransform.BeginAnimation(translationProperty, targetFrameAnimation);
        }
Exemple #26
0
 public NavigationStackItem(Frame frame, object content, NavigationAnimation animation)
 {
     __Frame     = frame;
     __Content   = content;
     __Animation = animation;
 }
 public NavigationRequest(Frame frame, NavigationAnimation animation, Action onComplete)
 {
     Frame      = frame;
     Animation  = animation;
     OnComplete = onComplete;
 }
Exemple #28
0
        public void AnimatedNavigate(Frame targetFrame,
                                     NavigationAnimation navigationAnimation = NavigationAnimation.FadeToLeft, Action onComplete = null)
        {
            if (!Dispatcher.CheckAccess())
            {
                GuiUtils.InvokeInGuiThread(this, () => { AnimatedNavigate(targetFrame, navigationAnimation, onComplete); });
                return;
            }

            if (__NavigationInProgress)
            {
                __NavigationQueue.Enqueue(new NavigationRequest(targetFrame, navigationAnimation, onComplete));
                return;
            }

            /*
             * bool shouldNavigate = __CurrentFrame != null &&
             *                    __CurrentFrame != targetFrame;
             *
             * targetFrame.Visibility = Visibility.Visible;
             *
             * __TransitionFrame = __CurrentFrame;
             * __CurrentFrame = targetFrame;
             *
             * if (!shouldNavigate ||
             *  navigationAnimation == NavigationAnimation.None)
             * {
             *  NavigationComplete();
             *  return;
             * }
             *
             * if (targetFrame != DocumentFrame &&
             *  targetFrame.Content != null &&
             *  DocumentFrame.Content != null)
             * {
             *  ((Page)targetFrame.Content).MinHeight = ((Page)DocumentFrame.Content).ActualHeight;
             * }
             *
             * __NavigationInProgress = true;
             *
             * Frame documentFrame = targetFrame;
             *
             * TranslateTransform transitionFrameTransform = new TranslateTransform();
             * DoubleAnimation transitionFrameAnimation = new DoubleAnimation();
             * transitionFrameAnimation.Duration = new Duration(TimeSpan.FromSeconds(TRANSITION_TIME));
             * transitionFrameAnimation.Completed += (sender, args) =>
             * {
             *  NavigationComplete();
             *  onComplete?.Invoke();
             * };
             * transitionFrameAnimation.DecelerationRatio = 1;
             *
             * TranslateTransform documentFrameTransform = new TranslateTransform();
             * DoubleAnimation documentFrameAnimation = new DoubleAnimation();
             * documentFrameAnimation.Duration = new Duration(TimeSpan.FromSeconds(TRANSITION_TIME));
             * documentFrameAnimation.DecelerationRatio = 1;
             *
             * int animationLength = (int)DocumentFrame.ActualWidth;
             * if (animationLength == 0)
             *  animationLength = (int) ActualWidth;
             *
             * if (navigationAnimation == NavigationAnimation.FadeToLeft || navigationAnimation == NavigationAnimation.FadeUp)
             * {
             *  transitionFrameAnimation.From = 1;
             *  transitionFrameAnimation.To = -animationLength + 1; // small overlapping is required for smooth transition
             *  documentFrameAnimation.From = animationLength;
             *  documentFrameAnimation.To = 0;
             * }
             * else
             * {
             *  transitionFrameAnimation.From = 0;
             *  transitionFrameAnimation.To = animationLength;
             *
             *  documentFrameAnimation.From = -animationLength + 1; // small overlapping is required for smooth transition
             *  documentFrameAnimation.To = 0;
             * }
             *
             * DoubleAnimation opacityAnimation = new DoubleAnimation
             *  {
             *      Duration = new Duration(TimeSpan.FromSeconds(TRANSITION_TIME)),
             *      From = 1,
             *      To = 0.5
             *  };
             *
             * DoubleAnimation opacityAnimation2 = new DoubleAnimation
             *  {
             *      Duration = new Duration(TimeSpan.FromSeconds(TRANSITION_TIME)),
             *      From = 0.9,
             *      To = 1
             *  };
             *
             * documentFrame.RenderTransform = documentFrameTransform;
             * __TransitionFrame.RenderTransform = transitionFrameTransform;
             *
             * // opacity
             * __TransitionFrame.BeginAnimation(Frame.OpacityProperty, opacityAnimation);
             * documentFrame.BeginAnimation(Frame.OpacityProperty, opacityAnimation2);
             *
             * DependencyProperty translationProperty;
             *
             * if (navigationAnimation == NavigationAnimation.FadeToLeft || navigationAnimation == NavigationAnimation.FadeToRight)
             *  translationProperty = TranslateTransform.XProperty;
             * else
             *  translationProperty = TranslateTransform.YProperty;
             *
             * // move
             * transitionFrameTransform.BeginAnimation(translationProperty, transitionFrameAnimation);
             * documentFrameTransform.BeginAnimation(translationProperty, documentFrameAnimation);
             */
            bool shouldNavigate = __CurrentFrame != null && __CurrentFrame != targetFrame;

            targetFrame.Visibility = Visibility.Visible;

            __TransitionFrame = __CurrentFrame;
            __CurrentFrame    = targetFrame;

            if (!shouldNavigate || navigationAnimation == NavigationAnimation.None)
            {
                NavigationComplete();
                return;
            }

            __NavigationInProgress = true;

            Frame documentFrame = targetFrame;

            TranslateTransform transitionFrameTransform = new TranslateTransform();
            TranslateTransform documentFrameTransform   = new TranslateTransform();
            DoubleAnimation    opacityAnimation         = new DoubleAnimation
            {
                Duration     = new Duration(TimeSpan.FromSeconds(0.2)),
                From         = 1,
                To           = 0,
                FillBehavior = FillBehavior.HoldEnd
            };

            DoubleAnimation opacityAnimation2 = new DoubleAnimation
            {
                Duration     = new Duration(TimeSpan.FromSeconds(0.2)),
                BeginTime    = TimeSpan.FromSeconds(0.2),
                From         = 0,
                To           = 1,
                FillBehavior = FillBehavior.HoldEnd
            };

            documentFrame.RenderTransform     = documentFrameTransform;
            __TransitionFrame.RenderTransform = transitionFrameTransform;

            opacityAnimation2.Completed += (sender, args) =>
            {
                NavigationComplete();
                onComplete?.Invoke();
            };

            // opacity
            targetFrame.Opacity = 0;
            __TransitionFrame.BeginAnimation(Frame.OpacityProperty, opacityAnimation);
            documentFrame.BeginAnimation(Frame.OpacityProperty, opacityAnimation2);
        }
Exemple #29
0
 public void NavigateToSingUpPage(NavigationAnimation animation)
 {
     __MainWindowController.ShowSingUpPage(animation);
     CurrentPage = NavigationTarget.SingUpPage;
 }
Exemple #30
0
 public void ShowLogOutPage(NavigationAnimation animation, bool showSessionLimit = false)
 {
     AnimatedNavigate(LogOutFrame, animation, async() => { await LogOutViewModel.DoLogOut(showSessionLimit); });
 }