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); }
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; });
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"); }
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>)); }
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)); }
/// <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; }
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; }
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; } }
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; } }
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)); }
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); }
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; } }
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; }
private void RegisterViews() { NavigationState = new NavigationState(); Locator.CurrentMutable.RegisterConstant <INavigationState>(NavigationState); Locator.CurrentMutable.RegisterLazySingleton(() => new ExampleViewLocator(), typeof(IViewLocator)); }
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); }
public static NavigationState ReduceNavigationState(NavigationState state, IAction action) { if (action is NavigateAction) { return(Navigate(state, (NavigateAction)action)); } return(state); }
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(); } }
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); } }
public void StopNavigation() { m_navigationActive = false; m_navigationState = NavigationState.NotNavigating; UpdateNavigationUI(m_navigationState); Mapping.NotificationManager.Instance.GenerateNotification("Navigation stopped."); }
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; }
public async Task ReplaceAsync(Type pageModelType, NavigationState navState) { var oldTopPage = TopPage; await PushAsync(pageModelType, navState); FormsNavigation.RemovePage(oldTopPage); PrintNavigationStackDepth("ReplaceAsync"); }
private void NavigateTo(Vector3 target) { if (!navigationActions.TryGetValue(navigationState, out var navigationAction)) { throw new ArgumentOutOfRangeException(nameof(navigationState), navigationState.ToString()); } navigationState = navigationAction.Invoke(target); KeepNavigationAgentAtRigidbody(); }
private void InternalNavigateTo(NavigationState state, IScreen screen) { if (NavigationState == state) { return; } NavigationState = state; ActivateItem(screen); }
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; } }
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; }
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; } }
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(); } }
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; } }
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"); }
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); }); } }
public static void SetNavigationState(NavigationState navigationState) { _navState = navigationState; }
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)); }
private void OnJournalNavigation(Uri uri) { NavigationState navigationState = new NavigationState(uri) { journalNavigation = false, }; NavigateInternal(navigationState); }
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; }
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); }
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(); } }
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); }
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>)); }
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; }
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)); }