Ejemplo n.º 1
0
            protected override void UpdateState(NavigationState value)
            {
                base.UpdateState(value);

                switch (value)
                {
                case NavigationState.Initial:
                    NavigationText = $"Does something looks weird? Try switching [{cutting_mode}] or [{typing_mode}] to edit your lyric.";
                    break;

                case NavigationState.Working:
                case NavigationState.Done:
                    var mode = Screen.LyricEditor.Mode;

                    switch (mode)
                    {
                    case LyricEditorMode.Manage:
                        NavigationText = $"Cool! Try switching to [{typing_mode}] if you wants to edit lyric.";
                        break;

                    case LyricEditorMode.Typing:
                        NavigationText = $"Cool! Try switching to [{cutting_mode}] if you wants to cut or combine lyric.";
                        break;

                    default:
                        throw new ArgumentOutOfRangeException(nameof(mode));
                    }

                    break;

                case NavigationState.Error:
                    NavigationText = "Oops, seems cause some error in here.";
                    break;
                }
            }
        public override async Task <CrudType> ButtonClickBeforeRepositoryActionAsync(ButtonSetup button, FormEditContext editContext, ButtonContext context)
        {
            var request = await _navigationHandler.CreateNavigationRequestAsync(button, editContext);

            if (request != null)
            {
                var collection = request.IsPage ? null : await _collectionResolver.ResolveSetupAsync(request.CollectionAlias);

                var usageType = request.IsNew ? UsageType.New
                    : request.IsEdit ? UsageType.Edit
                    : UsageType.View;

                NavigationState navigationState;

                if (request.IsPage)
                {
                    navigationState = new NavigationState(request.CollectionAlias, usageType);
                }
                else if (request.IsList)
                {
                    navigationState = new NavigationState(request.CollectionAlias, request.ParentPath, usageType);
                }
                else
                {
                    navigationState = new NavigationState(request.CollectionAlias, request.ParentPath, request.VariantAlias ?? collection !.EntityVariant.Alias, request.Id, usageType);
                }

                _navigationStateProvider.AppendNavigationState(navigationState);
            }

            return(CrudType.None);
        }
Ejemplo n.º 3
0
    public MainViewModel()
    {
        _windowState  = (WindowState)Enum.Parse(typeof(WindowState), Services.UiConfig.WindowState);
        _windowWidth  = Services.UiConfig.WindowWidth ?? 1280;
        _windowHeight = Services.UiConfig.WindowHeight ?? 960;

        var(x, y) = (Services.UiConfig.WindowX, Services.UiConfig.WindowY);
        if (x != null && y != null)
        {
            _windowPosition = new PixelPoint(x.Value, y.Value);
        }

        _dialogScreen = new DialogScreenViewModel();

        _fullScreen = new DialogScreenViewModel(NavigationTarget.FullScreen);

        _compactDialogScreen = new DialogScreenViewModel(NavigationTarget.CompactDialogScreen);

        MainScreen = new TargettedNavigationStack(NavigationTarget.HomeScreen);

        NavigationState.Register(MainScreen, DialogScreen, FullScreen, CompactDialogScreen);

        _isMainContentEnabled  = true;
        _isDialogScreenEnabled = true;
        _isFullScreenEnabled   = true;

        _statusBar = new StatusBarViewModel();

        UiServices.Initialize();

        _addWalletPage = new AddWalletPageViewModel();
        _settingsPage  = new SettingsPageViewModel();
        _privacyMode   = new PrivacyModeViewModel();
        _navBar        = new NavBarViewModel(MainScreen);

        MusicControls = new MusicControlsViewModel();

        NavigationManager.RegisterType(_navBar);
        RegisterViewModels();

        RxApp.MainThreadScheduler.Schedule(async() => await _navBar.InitialiseAsync());

        this.WhenAnyValue(x => x.WindowState, x => x.WindowPosition, x => x.WindowWidth, x => x.WindowHeight)
        .Where(x => x.Item1 != WindowState.Minimized)
        .Where(x => x.Item2 != new PixelPoint(-32000, -32000))                 // value when minimized
        .ObserveOn(RxApp.MainThreadScheduler)
        .Subscribe(t =>
        {
            var(state, position, width, height) = t;

            Services.UiConfig.WindowState = state.ToString();
            if (position is { })
            {
                Services.UiConfig.WindowX = position.Value.X;
                Services.UiConfig.WindowY = position.Value.Y;
            }

            Services.UiConfig.WindowWidth  = width;
            Services.UiConfig.WindowHeight = height;
        });
Ejemplo n.º 4
0
        public void UpdateReduxState()
        {
            var newState = dispatcher.State.Navigation;

            if (!ReferenceEquals(newState, navigationState))
            {
                PageViewModel page = Content;
                if (navigationState?.Page != newState.Page)
                {
                    var lifetimeScope = IoCRegistrar.Container.BeginLifetimeScope();
                    switch (newState.Page)
                    {
                    case NavigationPage.FirstPage:
                        page = lifetimeScope.Resolve <FirstPageViewModel>();
                        break;

                    case NavigationPage.DictionaryPage:
                        page = lifetimeScope.Resolve <DictionaryPageViewModel>();
                        break;

                    default:
                        throw new Exception($"Unknown navigation page {newState.Page}");
                    }
                }
                if (page != Content)
                {
                    var oldContent = Content;
                    Content = page;
                    oldContent?.Dispose();
                }
                navigationState = newState;
            }
        }
        private IPageFor InstantiatePage(Type pageModelType,
                                         NavigationState navState)
        {
            // TODO Sent to error page if fails
            IPageFor pageFor = null;

            try
            {
                // Look up the Page for the corresponding PageModel
                var pageType = _pageModelPageDictionary[pageModelType];

                // Instantiate the PageModel
                var pageModel =
                    (BasePageModel)Activator.CreateInstance(pageModelType, navState);

                // Instantiate the Page and set its context to the PageModel
                var page = (Page)Activator.CreateInstance(pageType);
                page.BindingContext = pageModel;

                pageFor           = (IPageFor)page;
                pageFor.PageModel = pageModel;
            }
            catch (Exception exception)
            {
                SendErrorMessage(exception);
            }

            return(pageFor);
        }
        public async Task PushFromRootAsync(Type pageModelType, NavigationState navState)
        {
            await PopToRootAsync();
            await PushAsync(pageModelType, navState);

            PrintNavigationStackDepth("PushFromRootAsync");
        }
Ejemplo n.º 7
0
        public AppBootstrapper()
        {
            Navigation = new NavigationState();

            Locator.CurrentMutable.RegisterConstant(this, typeof(INavigatableScreen));

            // Set up Akavache
            //
            // Akavache is a portable data serialization library that we'll use to
            // cache data that we've downloaded
            BlobCache.ApplicationName = "Restaurant";

            // Set up Fusillade
            //
            // Fusillade is a super cool library that will make it so that whenever
            // we issue web requests, we'll only issue 4 concurrently, and if we
            // end up issuing multiple requests to the same resource, it will
            // de-dupe them. We're saying here, that we want our *backing*
            // HttpMessageHandler to be ModernHttpClient.
            Locator.CurrentMutable.RegisterConstant(new NativeMessageHandler(), typeof(HttpMessageHandler));

            Locator.CurrentMutable.Register(() => new AuthenticationPage(), typeof(IViewFor <AuthenticationViewModel>));

            Locator.CurrentMutable.Register(() => new SignUpPage(), typeof(IViewFor <SignUpViewModel>));

            Locator.CurrentMutable.Register(() => new MainPage(), typeof(IViewFor <MainViewModel>));
        }
Ejemplo n.º 8
0
 public TreePageUI(string name, string icon, string color, NavigationState navigateTo)
 {
     Name       = name ?? throw new ArgumentNullException(nameof(name));
     Icon       = icon ?? throw new ArgumentNullException(nameof(icon));
     Color      = color ?? throw new ArgumentNullException(nameof(color));
     NavigateTo = navigateTo ?? throw new ArgumentNullException(nameof(navigateTo));
 }
Ejemplo n.º 9
0
        /// <summary>
        /// Initialise the navigator
        /// </summary>
        private void Initialise()
        {
            if (m_Target != null)
            {
                m_State = NavigationState.Turning;
                return;
            }

            int       length    = Waypoint.s_Waypoints.Count;
            Transform newTarget = null;

            float minimumSquareDistance = Mathf.Infinity;

            for (int i = 0; i < length; i++)
            {
                Transform waypointTransform = Waypoint.s_Waypoints[i].transform;
                Vector3   displacement      = waypointTransform.position - transform.position;
                float     sqrDistance       = displacement.sqrMagnitude;
                Debug.LogFormat("name = {0} distance = {1}", Waypoint.s_Waypoints[i].name, sqrDistance);
                if (minimumSquareDistance > sqrDistance)
                {
                    minimumSquareDistance = sqrDistance;
                    newTarget             = waypointTransform;
                }
            }

            m_Target = newTarget;
        }
Ejemplo n.º 10
0
        private static void UpdateStateUsing(def_ardrone_state_mask_t ardroneState, ref NavigationState state)
        {
            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_NAVDATA_BOOTSTRAP))
                state |= NavigationState.Bootstrap;

            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_FLY_MASK))
                state |= NavigationState.Flying;
            else
                state |= NavigationState.Landed;

            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_WIND_MASK))
                state |= NavigationState.Wind;

            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_EMERGENCY_MASK))
                state |= NavigationState.Emergency;

            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_COMMAND_MASK))
                state |= NavigationState.Command;

            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_CONTROL_MASK))
                state |= NavigationState.Control;

            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_COM_WATCHDOG_MASK))
                state |= NavigationState.Watchdog;
        }
Ejemplo n.º 11
0
        private static void UpdateStateUsing(def_ardrone_state_mask_t ardroneState, ref NavigationState state)
        {
            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_FLY_MASK))
            {
                state |= NavigationState.Flying;
            }
            else
            {
                state |= NavigationState.Landed;
            }

            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_EMERGENCY_MASK))
            {
                state |= NavigationState.Emergency;
            }

            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_COMMAND_MASK))
            {
                state |= NavigationState.Command;
            }

            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_CONTROL_MASK))
            {
                state |= NavigationState.Control;
            }
        }
Ejemplo n.º 12
0
        private void NavigateTo(NavigationState nextState, NavigationEvent evt)
        {
            if (_currentState == nextState)
            {
                return;
            }

            var currentPresenter = _currentState?.GetPresenter();
            var nextPresenter    = nextState?.GetPresenter();

            _currentState = null;

            if (nextPresenter != null)
            {
                _currentState           = nextState;
                nextPresenter.Navigator = this;
                nextPresenter.Display(evt);
            }

            if (currentPresenter != null)
            {
                currentPresenter.Dismiss();
                currentPresenter.Navigator = null;
            }
        }
Ejemplo n.º 13
0
 public static NavigationState MoveMadeAction(NavigationState state, NavigationAction action)
 {
     return(state with
     {
         Open = action.Open
     });
 }
        public static void FillDropDownItem(ToolStripDropDownItem a_item, IEnumerable <NavigationState> a_list,
                                            Func <NavigationState, string> a_description, Action <NavigationState> a_action)
        {
            ToolStripDropDownItem ddi = a_item as ToolStripDropDownItem;

            ddi.DropDown.Items.Clear();

            foreach (NavigationState state in a_list)
            {
                string text = a_description(state);
                if (text == null)
                {
                    text = String.Empty;
                }

                ToolStripItem tti = ddi.DropDown.Items.Add(text);

                tti.Tag    = state;
                tti.Click += (s, e) =>
                {
                    ToolStripDropDownItem item        = s as ToolStripDropDownItem;
                    NavigationState       item_action = item.Tag as NavigationState;

                    a_action(item_action);
                };
            }
        }
 public void SetHoldingPattern(Vector3 location)
 {
     _flightpath             = null;
     _currentWaypoint        = null;
     _navState               = NavigationState.holdingPattern;
     _holdingPatternLocation = transform.position;
 }
        private async Task Create()
        {
            Error = " ";

            var authService = dr.GetService <IAuthService>();
            var registered  = await authService.Register(Name, Email, Password);

            if (!registered)
            {
                Logger.Value.Error("Registration has failed");
                Error = @"Something went wrong. Please try again.";
                return;
            }

            var authenticated = await authService.Login(Email, Password);

            if (!authenticated)
            {
                Logger.Value.Error("Login has failed. Redirecting to login page");
                // ki.
                NavigationState.NavigateAndReset(new RecoverPasswordViewModel(dr));
                return;
            }

            NavigationState.NavigateAndReset(new WebViewModel("test_page.htm", dr));
        }
Ejemplo n.º 17
0
        public static string PageTitle(this PageType pageType, NavigationState navState)
        {
            var pageTitle = "";

            try
            {
                // Override page title from PageType to make user-friendly or appropriate
                switch (pageType)
                {
                case PageType.Home:
                    pageTitle = HomePageTitle;

                    break;

                default:
                    // Use PageType for default page title and navigation testing
                    pageTitle = pageType.ToString();
                    break;
                }
            }
            catch (Exception exception)
            {
                // exception.Data.Add(,);

                SendErrorMessage(exception);
            }

            return(pageTitle);
        }
Ejemplo n.º 18
0
        private void FacebookStateChanged(FacebookRequest request, NavigationState state)
        {
            switch (state)
            {
                case NavigationState.Done:
                case NavigationState.Error:
                    //WebOverlay.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                    WebPopup.IsOpen = false;
                    FacebookOverlay.NavigateToString("");
                    break;

                case NavigationState.Navigating:
                    switch (request)
                    {
                        case FacebookRequest.Logout:
                            FacebookOverlay.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                            CancelButton.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                            break;

                        case FacebookRequest.Login:
                        case FacebookRequest.InviteRequest:
                            FacebookOverlay.Visibility = Windows.UI.Xaml.Visibility.Visible;
                            CancelButton.Visibility = Windows.UI.Xaml.Visibility.Visible;
                            break;
                    }
                    //WebOverlay.Visibility = Windows.UI.Xaml.Visibility.Visible;
                    WebPopup.IsOpen = true;
                    break;
            }
        }
Ejemplo n.º 19
0
    void MouseInput()
    {
        if (Input.GetMouseButtonDown(2))
        {
            StoreMouse(true);
        }

        if (Input.GetMouseButtonUp(2))
        {
            StoreMouse(false);
        }


        if (Input.GetMouseButton(0))
        {
            currentState = NavigationState.Rotate;
            return;
        }
        else if (Input.GetMouseButton(2))
        {
            currentState = NavigationState.Pan;
            return;
        }

        currentState = NavigationState.Zoom;
    }
Ejemplo n.º 20
0
        private void RegisterViews()
        {
            NavigationState = new NavigationState();
            Locator.CurrentMutable.RegisterConstant <INavigationState>(NavigationState);

            Locator.CurrentMutable.RegisterLazySingleton(() => new ExampleViewLocator(), typeof(IViewLocator));
        }
Ejemplo n.º 21
0
        private void FacebookStateChanged(FacebookRequest request, NavigationState state)
        {
            switch (state)
            {
            case NavigationState.Done:
            case NavigationState.Error:
                //WebOverlay.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                WebPopup.IsOpen = false;
                FacebookOverlay.NavigateToString("");
                break;

            case NavigationState.Navigating:
                switch (request)
                {
                case FacebookRequest.Logout:
                    FacebookOverlay.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                    CancelButton.Visibility    = Windows.UI.Xaml.Visibility.Collapsed;
                    break;

                case FacebookRequest.Login:
                case FacebookRequest.InviteRequest:
                    FacebookOverlay.Visibility = Windows.UI.Xaml.Visibility.Visible;
                    CancelButton.Visibility    = Windows.UI.Xaml.Visibility.Visible;
                    break;
                }
                //WebOverlay.Visibility = Windows.UI.Xaml.Visibility.Visible;
                WebPopup.IsOpen = true;
                break;
            }
        }
        public void SetUp()
        {
            _location          = "";
            _navigationManager = new TestNavigationManager("http://domain/", "http://domain/path?p1=10");
            _navigationManager.LocationChanged += (sender, args) => _location = args.Location;

            _state = new NavigationState(_navigationManager);
        }
Ejemplo n.º 23
0
 public static NavigationState ReduceNavigationState(NavigationState state, IAction action)
 {
     if (action is NavigateAction)
     {
         return(Navigate(state, (NavigateAction)action));
     }
     return(state);
 }
Ejemplo n.º 24
0
        public async Task PushAsync(Type pageModelType, NavigationState navState)
        {
            var page = InstantiatePage(pageModelType, navState);

            await FormsNavigation.PushAsync((Page)page, false);

            PrintNavigationStackDepth("PushAsync");
        }
        public IStoryPath GetPath(CameraProps initialCameraProps, int endNodeId, NavigationState navigationState, bool interLevel)
        {
            var endNode       = storyGraph.NodeObjects[storyGraph.Root].Scene.World.GetNodeById(endNodeId);
            var aEndFocus     = endNode.GetComponent <IFocusNodeComponent>();
            var endCameraInfo = aEndFocus.DefaultViewpointMechanism.FixedCamera.GetProps();

            return(new DirectStoryPath(initialCameraProps, endCameraInfo, PathDefaultDuration));
        }
 public void AssignPath(Flightpath flightpath, bool startFollowing)
 {
     _flightpath = flightpath;
     if (startFollowing)
     {
         _navState        = NavigationState.followingFlightPath;
         _currentWaypoint = _flightpath.GetFirstWaypoint();
     }
 }
Ejemplo n.º 27
0
        public MainViewModel()
        {
            _windowState  = (WindowState)Enum.Parse(typeof(WindowState), Services.UiConfig.WindowState);
            _dialogScreen = new DialogScreenViewModel();

            _fullScreen = new DialogScreenViewModel(NavigationTarget.FullScreen);

            _compactDialogScreen = new DialogScreenViewModel(NavigationTarget.CompactDialogScreen);

            MainScreen = new TargettedNavigationStack(NavigationTarget.HomeScreen);

            NavigationState.Register(MainScreen, DialogScreen, FullScreen, CompactDialogScreen);

            _isMainContentEnabled  = true;
            _isDialogScreenEnabled = true;
            _isFullScreenEnabled   = true;

            _statusBar = new StatusBarViewModel();

            UiServices.Initialize();

            _addWalletPage = new AddWalletPageViewModel();
            _settingsPage  = new SettingsPageViewModel();
            _privacyMode   = new PrivacyModeViewModel();
            _searchPage    = new SearchPageViewModel();
            _navBar        = new NavBarViewModel(MainScreen);

            NavigationManager.RegisterType(_navBar);

            RegisterCategories(_searchPage);
            RegisterViewModels();

            RxApp.MainThreadScheduler.Schedule(async() => await _navBar.InitialiseAsync());

            _searchPage.Initialise();

            this.WhenAnyValue(x => x.WindowState)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(windowState => Services.UiConfig.WindowState = windowState.ToString());

            this.WhenAnyValue(x => x.DialogScreen !.IsDialogOpen)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(x => IsMainContentEnabled = !x);

            this.WhenAnyValue(x => x.FullScreen !.IsDialogOpen)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(x => IsMainContentEnabled = !x);

            this.WhenAnyValue(x => x.CompactDialogScreen !.IsDialogOpen)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(x => IsMainContentEnabled = !x);

            if (!Services.WalletManager.HasWallet())
            {
                _dialogScreen.To(_addWalletPage, NavigationMode.Clear);
            }
        }
Ejemplo n.º 28
0
        public void StopNavigation()
        {
            m_navigationActive = false;

            m_navigationState = NavigationState.NotNavigating;
            UpdateNavigationUI(m_navigationState);

            Mapping.NotificationManager.Instance.GenerateNotification("Navigation stopped.");
        }
Ejemplo n.º 29
0
        private void StartNavigation(PageGroupItem item, object vm, int?stateId)
        {
            var navigator = item.CreateNavigator(vm);

            // ページ群内ナビゲーションがキャンセルじゃなくて、明示的終了した時には NavigateBack を呼ぶ。
            _current = new NavigationState(navigator, vm, stateId, NavigateBackAsync);

            CurrentPageKey = item.Key;
        }
Ejemplo n.º 30
0
        public async Task ReplaceAsync(Type pageModelType, NavigationState navState)
        {
            var oldTopPage = TopPage;

            await PushAsync(pageModelType, navState);

            FormsNavigation.RemovePage(oldTopPage);

            PrintNavigationStackDepth("ReplaceAsync");
        }
Ejemplo n.º 31
0
    private void NavigateTo(Vector3 target)
    {
        if (!navigationActions.TryGetValue(navigationState, out var navigationAction))
        {
            throw new ArgumentOutOfRangeException(nameof(navigationState), navigationState.ToString());
        }
        navigationState = navigationAction.Invoke(target);

        KeepNavigationAgentAtRigidbody();
    }
Ejemplo n.º 32
0
        private void InternalNavigateTo(NavigationState state, IScreen screen)
        {
            if (NavigationState == state)
            {
                return;
            }

            NavigationState = state;
            ActivateItem(screen);
        }
Ejemplo n.º 33
0
 private static void UpdateStateUsing(CTRL_STATES ctrlStates, ref NavigationState state)
 {
     switch (ctrlStates)
     {
         case CTRL_STATES.CTRL_TRANS_TAKEOFF:
             state |= NavigationState.Takeoff;
             break;
         case CTRL_STATES.CTRL_TRANS_LANDING:
             state |= NavigationState.Landing;
             break;
         case CTRL_STATES.CTRL_HOVERING:
             state |= NavigationState.Hovering;
             break;
     }
 }
Ejemplo n.º 34
0
        private static void UpdateStateUsing(def_ardrone_state_mask_t ardroneState, ref NavigationState state)
        {
            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_FLY_MASK))
                state |= NavigationState.Flying;
            else
                state |= NavigationState.Landed;

            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_EMERGENCY_MASK))
                state |= NavigationState.Emergency;

            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_COMMAND_MASK))
                state |= NavigationState.Command;

            if (ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_CONTROL_MASK))
                state |= NavigationState.Control;
        }
Ejemplo n.º 35
0
        private void FacebookStateChanged(FacebookRequest request, NavigationState state)
        {
            switch (state)
            {
                case NavigationState.UserInput:
                    MainPage.Current.FacebookLoading.Visibility = Visibility.Collapsed;
                    break;

                case NavigationState.Done:
                    MainPage.Current.FacebookGrid.Visibility = Visibility.Collapsed;
                    MainPage.Current.FacebookLoading.Visibility = Visibility.Collapsed;
                    break;

                case NavigationState.Error:
                    MainPage.Current.FacebookGrid.Visibility = Visibility.Visible;
                    MainPage.Current.FacebookLoading.Visibility = Visibility.Collapsed;
                    //FacebookOverlay.NavigateToString(""); // Why is this here? Doesn't make sense to show an empty page if there is an error
                    break;

                case NavigationState.Navigating:
                    MainPage.Current.FacebookLoading.Visibility = Visibility.Visible;;

                    switch (request)
                    {
                        case FacebookRequest.Logout:
                            MainPage.Current.FacebookGrid.Visibility = Visibility.Collapsed;
                            break;

                        case FacebookRequest.Login:
                            MainPage.Current.FacebookGrid.Visibility = Visibility.Visible;
                            break;
                        case FacebookRequest.InviteRequest:
                            MainPage.Current.FacebookGrid.Visibility = Visibility.Visible;
                            break;
                    }
                    break;
            }
        }
Ejemplo n.º 36
0
        private void ProcessStateTransitions(NavigationState state)
        {
            if (state.HasFlag(NavigationState.Bootstrap))
            {
                _commandQueue.Flush();
                var configuration = new DroneConfiguration();
                configuration.General.NavdataDemo.ChangeTo(false);
                configuration.SendTo(this);
                Send(new ControlCommand(ControlMode.NoControlMode));
            }

            if (state.HasFlag(NavigationState.Watchdog))
            {
                Trace.TraceWarning("Communication Watchdog!");
            }

            switch (_stateRequest)
            {
                case StateRequest.None:
                    return;
                case StateRequest.Emergency:
                    if (state.HasFlag(NavigationState.Flying))
                        Send(new RefCommand(RefMode.Emergency));
                    else
                        _stateRequest = StateRequest.None;
                    break;
                case StateRequest.ResetEmergency:
                    Send(new RefCommand(RefMode.Emergency));
                    _stateRequest = StateRequest.None;
                    break;
                case StateRequest.Land:
                    if (state.HasFlag(NavigationState.Flying) &&
                        state.HasFlag(NavigationState.Landing) == false)
                    {
                        Send(new RefCommand(RefMode.Land));
                    }
                    else
                        _stateRequest = StateRequest.None;
                    break;
                case StateRequest.Fly:
                    if (state.HasFlag(NavigationState.Landed) &&
                        state.HasFlag(NavigationState.Takeoff) == false &&
                        state.HasFlag(NavigationState.Emergency) == false)
                    {
                        Send(new RefCommand(RefMode.Takeoff));
                    }
                    else
                        _stateRequest = StateRequest.None;
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }
        }
Ejemplo n.º 37
0
        private void ChangeNavigationState(NavigationState state)
        {
            if (state == LatestState) return;

            LatestState = state;
            if (StateChanged != null)
                StateChanged(CurrentRequest, LatestState);

            if (_callbackHook != null && (state == NavigationState.Done || state == NavigationState.Error))
            {
                _callbackHook.Start();
                _callbackHook = null;
            }
        }
Ejemplo n.º 38
0
        private void SubscribeNavigationHosts()
        {
            bool currentlyPopping = false;
            this.WhenAnyObservable(x => x.Router.NavigationStack.Changed)
                .Where(_ => Router.NavigationStack.IsEmpty)
                .SelectMany(_ => pageForViewModel(Router.GetCurrentViewModel()))
                .SelectMany(async x =>
                {
                    currentlyPopping = true;
                    await this.PopToRootAsync();
                    currentlyPopping = false;
                    return x;
                })
                .Subscribe();

            this.WhenAnyObservable(x => x.Router.NavigateToMainPage)
                .SelectMany(x => pageForViewModel(x))
                .Subscribe((p) =>
                {
                    App.Current.MainPage = null;
                    App.Current.MainPage = p;
                    while (Navigation.NavigationStack.Count > 1)
                        Navigation.RemovePage(Navigation.NavigationStack[0]); //WelcomeStartPage
                });


            this.WhenAnyObservable(x => x.Router.Navigate)
                .SelectMany(_ => pageForViewModel(Router.GetCurrentViewModel()))
                .SelectMany(x =>
                        this.PushAsync(x).ToObservable())
                .Subscribe();

            this.WhenAnyObservable(x => x.Router.NavigateBack)
                .SelectMany(async x =>
                {
                    currentlyPopping = true;
                    await this.PopAsync();
                    currentlyPopping = false;

                    return x;
                })
                .Do(_ => ((IViewFor)this.CurrentPage).ViewModel = Router.GetCurrentViewModel())
                .Subscribe();

            var poppingEvent = Observable.FromEventPattern<NavigationEventArgs>(x => this.Popped += x, x => this.Popped -= x);
            poppingEvent
                 .Where(_ => !currentlyPopping && Router != null)
                 .Subscribe(_ =>
                 {
                     try
                     {

                         Router.NavigationStack.RemoveAt(Router.NavigationStack.Count - 1);
                         ((IViewFor)this.CurrentPage).ViewModel = Router.GetCurrentViewModel();
                     }
                     catch (Exception)
                     {
                         throw;
                     }

                 });


            Router = Locator.Current.GetService<INavigatableScreen>().Navigation;
            if (Router == null) throw new Exception("You *must* register an IScreen class representing your App's main Screen");
        }
Ejemplo n.º 39
0
        private void InitiateNavigation(NavigationState navigationState)
        {
            try {
                _navigateResult = _loader.BeginLoadPage(navigationState.uri, Page, OnPageLoadCallback, navigationState);
            }
            catch (Exception e) {
                Page page = GetErrorPage(e);

                Dispatcher.BeginInvoke(delegate() {
                    OnNavigationCompleted(navigationState, page);
                });
            }
        }
Ejemplo n.º 40
0
 public static void SetNavigationState(NavigationState navigationState)
 {
     _navState = navigationState;
 }
Ejemplo n.º 41
0
        private void OnNavigationCompleted(NavigationState navigationState, Page page)
        {
            Page currentPage = Page;
            if ((currentPage != null) && !(currentPage is ErrorPage)) {
                _cache.AddPage(currentPage, currentPage.OriginalUri);
            }

            page.Uri = navigationState.uri.GetUri();
            page.OriginalUri = navigationState.uri.OriginalUri;

            if (navigationState.cachedPage == false) {
                IsNavigating = false;
            }
            NavigateInternal(page);
            if (navigationState.journalNavigation) {
                _journal.AddEntry(navigationState.uri.OriginalUri);
            }

            _backCommand.UpdateStatus(_journal.CanGoBack);
            _forwardCommand.UpdateStatus(_journal.CanGoForward);

            page.OnNavigated(new PageNavigatedEventArgs(!navigationState.cachedPage));
            if (String.IsNullOrEmpty(navigationState.fragment) == false) {
                page.OnStateChanged(new PageStateEventArgs(navigationState.fragment));
            }

            OnNavigated(new NavigatedEventArgs(navigationState.uri.OriginalUri, page is ErrorPage));
        }
Ejemplo n.º 42
0
 private void OnJournalNavigation(Uri uri)
 {
     NavigationState navigationState = new NavigationState(uri) {
                                           journalNavigation = false,
                                       };
     NavigateInternal(navigationState);
 }
Ejemplo n.º 43
0
        private bool NavigateInternal(NavigationState navigationState)
        {
            if (_contentView == null) {
                return true;
            }
            if (_navigateResult != null) {
                ((NavigationState)_navigateResult.AsyncState).canceled = true;
                _navigateResult = null;
            }

            Page currentPage = Page;

            string fragment;
            if (navigationState.uri.TryGetFragment(out fragment)) {
                if (navigationState.uri.GetPath() == null) {
                    // Fragment navigation

                    if (currentPage != null) {
                        UriData currentUri = new UriData(currentPage.OriginalUri);
                        currentUri.SetFragment(fragment);

                        Uri newUri = currentUri.GetUri();
                        _journal.AddEntry(newUri);
                        _backCommand.UpdateStatus(_journal.CanGoBack);
                        _forwardCommand.UpdateStatus(_journal.CanGoForward);

                        currentPage.OnStateChanged(new PageStateEventArgs(fragment));

                        return true;
                    }

                    return false;
                }
                else {
                    navigationState.fragment = fragment;
                    navigationState.uri.SetFragment(null);
                }
            }

            if (_redirecting == false) {
                bool canCancel = !_journal.IsIntegratedWithBrowser;

                if (currentPage != null) {
                    PageNavigatingEventArgs e = new PageNavigatingEventArgs(canCancel);
                    currentPage.OnNavigating(e);

                    if (canCancel && e.Cancel) {
                        return false;
                    }
                }

                NavigatingEventArgs ne = new NavigatingEventArgs(navigationState.uri.OriginalUri, canCancel);
                OnNavigating(ne);
                if (canCancel && ne.Cancel) {
                    return false;
                }
            }

            Page page = _cache.GetPage(navigationState.uri.OriginalUri);
            if (page != null) {
                navigationState.cachedPage = true;
                Dispatcher.BeginInvoke(delegate() {
                    OnNavigationCompleted(navigationState, page);
                });
                return true;
            }

            try {
                IAsyncResult navigateResult = _loader.BeginLoadPage(navigationState.uri.GetUri(), Page,
                                                                    OnPageLoadCallback, navigationState);
                if (navigateResult.CompletedSynchronously == false) {
                    _navigateResult = navigateResult;
                    IsNavigating = true;
                }
            }
            catch (Exception e) {
                Page errorPage = GetErrorPage(e);

                Dispatcher.BeginInvoke(delegate() {
                    OnNavigationCompleted(navigationState, errorPage);
                });
            }

            return true;
        }
Ejemplo n.º 44
0
        private void NavigateInternal(NavigationState navigationState)
        {
            if (_contentView == null) {
                return;
            }

            // TODO: False if we don't own journal and this navigation request is
            //       because of a browser-based back/fwd/address change gesture
            bool canCancel = true;

            Page currentPage = Page;
            if (currentPage != null) {
                PageNavigatingEventArgs e = new PageNavigatingEventArgs(canCancel);
                currentPage.OnNavigating(e);

                if (canCancel && e.Canceled) {
                    return;
                }
            }

            NavigatingEventArgs ne = new NavigatingEventArgs(navigationState.uri, canCancel);
            OnNavigating(ne);
            if (canCancel && ne.Canceled) {
                return;
            }

            Page page = _cache.GetPage(navigationState.uri);
            if (page != null) {
                navigationState.cachedPage = true;
                Dispatcher.BeginInvoke(delegate() {
                    OnNavigationCompleted(navigationState, page);
                });
                return;
            }

            VisualStateManager.GoToState(this, "Navigating", /* useTransitions */ true);
            InitiateNavigation(navigationState);
        }
Ejemplo n.º 45
0
        private void ProcessStateTransitions(NavigationState state)
        {
            if (state.HasFlag(NavigationState.Bootstrap))
            {
                _commandQueue.Flush();
                var settings = new Settings();
                settings.General.NavdataDemo = false;
                Send(settings);
            }

            if (state.HasFlag(NavigationState.Watchdog))
            {
                Trace.TraceWarning("Communication Watchdog!");
            }

            switch (_stateRequest)
            {
                case StateRequest.None:
                    return;
                case StateRequest.Emergency:
                    if (state.HasFlag(NavigationState.Flying))
                        Send(RefCommand.Emergency);
                    else
                        _stateRequest = StateRequest.None;
                    break;
                case StateRequest.ResetEmergency:
                    Send(RefCommand.Emergency);
                    _stateRequest = StateRequest.None;
                    break;
                case StateRequest.Land:
                    if (state.HasFlag(NavigationState.Flying) &&
                        state.HasFlag(NavigationState.Landing) == false)
                    {
                        Send(RefCommand.Land);
                    }
                    else
                        _stateRequest = StateRequest.None;
                    break;
                case StateRequest.Fly:
                    if (state.HasFlag(NavigationState.Landed) &&
                        state.HasFlag(NavigationState.Takeoff) == false &&
                        state.HasFlag(NavigationState.Emergency) == false)
                    {
                        Send(RefCommand.Takeoff);
                    }
                    else
                        _stateRequest = StateRequest.None;
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }
        }
Ejemplo n.º 46
0
		void NavigateHistory(bool forward)
		{
			var combinedState = new NavigationState(treeView.SelectedItems.OfType<SharpTreeNode>(), decompilerTextView.GetState());
			history.Record(combinedState, replace: true, clearForward: false);
			var newState = forward ? history.GoForward() : history.GoBack();

			ignoreDecompilationRequests = true;
			treeView.SelectedItems.Clear();
			foreach (var node in newState.TreeNodes)
			{
				treeView.SelectedItems.Add(node);
			}
			if (newState.TreeNodes.Any())
				treeView.FocusNode(newState.TreeNodes.First());
			ignoreDecompilationRequests = false;
			DecompileSelectedNodes(newState.ViewState, false);
		}
Ejemplo n.º 47
0
        public AppBotstrapper()
        {
            Navigation = new NavigationState();

            Locator.CurrentMutable.RegisterConstant(this, typeof(INavigatableScreen));

            // Set up Akavache
            //
            // Akavache is a portable data serialization library that we'll use to
            // cache data that we've downloaded
            BlobCache.ApplicationName = "Restaurant";

            // Set up Fusillade
            //
            // Fusillade is a super cool library that will make it so that whenever
            // we issue web requests, we'll only issue 4 concurrently, and if we
            // end up issuing multiple requests to the same resource, it will
            // de-dupe them. We're saying here, that we want our *backing*
            // HttpMessageHandler to be ModernHttpClient.
            Locator.CurrentMutable.RegisterConstant(new NativeMessageHandler(), typeof(HttpMessageHandler));

            Locator.CurrentMutable.Register(() => new AuthenticationPage(), typeof(IViewFor<AuthenticationViewModel>));

            Locator.CurrentMutable.Register(() => new SignUpPage(), typeof(IViewFor<SignUpViewModel>));

            Locator.CurrentMutable.Register(() => new MainPage(), typeof(IViewFor<MainViewModel>));
        }
Ejemplo n.º 48
0
        private bool NavigateInternal(NavigationState navigationState)
        {
            if (navigationState.uri.IsAbsoluteUri == true) {
                throw new ArgumentException("The URI must be a relative URI.");
            }
            if (_contentView == null) {
                return true;
            }

            Page currentPage = Page;

            string url = navigationState.originalUri.ToString();

            int fragmentIndex = url.IndexOf('#');
            if (url.Length <= fragmentIndex + 1) {
                throw new ArgumentException("Invalid URL");
            }
            string fragment = url.Substring(fragmentIndex + 1);

            if (fragmentIndex > 0) {
                navigationState.fragment = fragment;
                navigationState.uri = new Uri(url.Substring(0, fragmentIndex), UriKind.Relative);
            }
            else if (fragmentIndex == 0) {
                if (currentPage != null) {
                    string currentUrl = currentPage.OriginalUri.ToString();
                    int currentFragmentIndex = currentUrl.IndexOf('#');

                    if (currentFragmentIndex > 0) {
                        currentUrl = currentUrl.Substring(0, currentFragmentIndex);
                    }

                    url = currentUrl + "#" + fragment;

                    _journal.AddEntry(new Uri(url, UriKind.Relative));
                    _backCommand.UpdateStatus(_journal.CanGoBack);
                    _forwardCommand.UpdateStatus(_journal.CanGoForward);

                    currentPage.OnStateChanged(new PageStateEventArgs(fragment));

                    return true;
                }

                return false;
            }

            if (_redirecting == false) {
                // TODO: False if we don't own journal and this navigation request is
                //       because of a browser-based back/fwd/address change gesture
                bool canCancel = true;

                if (currentPage != null) {
                    PageNavigatingEventArgs e = new PageNavigatingEventArgs(canCancel);
                    currentPage.OnNavigating(e);

                    if (canCancel && e.Canceled) {
                        return false;
                    }
                }

                NavigatingEventArgs ne = new NavigatingEventArgs(navigationState.originalUri, canCancel);
                OnNavigating(ne);
                if (canCancel && ne.Canceled) {
                    return false;
                }
            }

            Page page = _cache.GetPage(navigationState.originalUri);
            if (page != null) {
                navigationState.cachedPage = true;
                Dispatcher.BeginInvoke(delegate() {
                    OnNavigationCompleted(navigationState, page);
                });
                return true;
            }

            if (_uriMapper != null) {
                navigationState.uri = _uriMapper.MapPageUri(navigationState.uri);
            }

            IsNavigating = true;

            try {
                _navigateResult = _loader.BeginLoadPage(navigationState.uri, Page, OnPageLoadCallback, navigationState);
            }
            catch (Exception e) {
                Page errorPage = GetErrorPage(e);

                Dispatcher.BeginInvoke(delegate() {
                    OnNavigationCompleted(navigationState, errorPage);
                });
            }

            return true;
        }
Ejemplo n.º 49
0
        private void OnNavigationCompleted(NavigationState navigationState, Page page)
        {
            Page currentPage = Page;
            if (currentPage != null) {
                _cache.RemovePageReference(currentPage);
            }

            page.Uri = navigationState.uri;

            if (navigationState.cachedPage == false) {
                if (!(page is ErrorPage)) {
                    _cache.AddPageReference(page);
                }
                VisualStateManager.GoToState(this, "Navigated", /* useTransitions */ true);
            }
            NavigateInternal(page);
            if (navigationState.journalNavigation) {
                _journal.AddEntry(navigationState.uri);
            }

            _backCommand.UpdateStatus(_journal.CanGoBack);
            _forwardCommand.UpdateStatus(_journal.CanGoForward);

            page.OnNavigated(new PageNavigatedEventArgs(!navigationState.cachedPage));

            OnNavigated(new NavigatedEventArgs(navigationState.uri, page is ErrorPage));
        }