/// <summary> /// Event handler for the ViewNavEvent. /// </summary> /// <param name="navEvent">Message for the event.</param> public void Handle(ViewNavEvent navEvent) { // Check if its a back event or a new view // to display if (navEvent.ID == ViewNavEvent.ViewId.Back) { if (_backStack.Count > 0) { _prevViewNavEvent = _backStack.Pop(); NavigateToView(_prevViewNavEvent); } } else { // Show the view NavigateToView(navEvent); // Set the preview view to the back stack // and store the current view to put on the stack later next time if (_prevViewNavEvent != null) { _backStack.Push(_prevViewNavEvent); } // Store the event if it is not back _prevViewNavEvent = navEvent; } }
/// <summary> /// Load the home view. /// </summary> public ShellViewModel(IEventAggregator events) { Debug.Print("Shell Open"); // To set the Window title // http://stackoverflow.com/questions/4615467/problem-with-binding-title-of-wpf-window-on-property-in-shell-view-model-class base.DisplayName = "Pulse"; // Initialize the values _events = events; events.Subscribe(this); // Setup ErrorLog SetupErrorLog(); // Set a size of 10 views _backStack = new Stack <ViewNavEvent>(20); _prevViewNavEvent = null; // Set the Navigation bar viewmodel NavBarVM = IoC.Get <NavBarViewModel>(); IsNavBarEnabled = false; // Set the Playback viewmodel PlaybackVM = IoC.Get <PlaybackViewModel>(); IsPlaybackEnabled = false; // Command to view the Home view HomeViewCommand = ReactiveCommand.Create(); HomeViewCommand.Subscribe(_ => _events.PublishOnUIThread(new ViewNavEvent(ViewNavEvent.ViewId.HomeView))); // Command to view the Terimal view TerminalViewCommand = ReactiveCommand.Create(); TerminalViewCommand.Subscribe(_ => _events.PublishOnUIThread(new ViewNavEvent(ViewNavEvent.ViewId.TerminalView))); // Command to view the Settings view SettingsViewCommand = ReactiveCommand.Create(); SettingsViewCommand.Subscribe(_ => _events.PublishOnUIThread(new ViewNavEvent(ViewNavEvent.ViewId.SettingsView))); // Command to view the Settings view AboutViewCommand = ReactiveCommand.Create(); AboutViewCommand.Subscribe(_ => _events.PublishOnUIThread(new ViewNavEvent(ViewNavEvent.ViewId.AboutView))); // Command to view the Settings view ValidationTestViewCommand = ReactiveCommand.Create(); ValidationTestViewCommand.Subscribe(_ => _events.PublishOnUIThread(new ViewNavEvent(ViewNavEvent.ViewId.ValidationTestView))); // Command to go back a view BackCommand = ReactiveCommand.Create(); BackCommand.Subscribe(_ => _events.PublishOnUIThread(new ViewNavEvent(ViewNavEvent.ViewId.Back))); // Display the HomeViewModel Handle(new ViewNavEvent(ViewNavEvent.ViewId.HomeView)); // Check for updates to the applications CheckForUpdates(); Debug.Print("Shell Complete"); }
/// <summary> /// Navigate to the view based off the /// event given. /// </summary> /// <param name="message"></param> private void NavigateToView(ViewNavEvent message) { switch (message.ID) { case ViewNavEvent.ViewId.HomeView: var vmHome = IoC.Get <HomeViewModel>(); //MenuLinks = vmHome.GetMenu(); ActivateItem(vmHome); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.AboutView: var aboutHome = IoC.Get <AboutViewModel>(); ActivateItem(aboutHome); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.TerminalView: var adcpConn = IoC.Get <AdcpConnection>(); ActivateItem(adcpConn.TerminalVM); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.ViewDataView: var vmViewData = IoC.Get <ViewDataBaseViewModel>(); ActivateItem(vmViewData); IsNavBarEnabled = true; IsPlaybackEnabled = true; break; case ViewNavEvent.ViewId.ValidationTestView: var vtData = IoC.Get <ValidationTestBaseViewModel>(); ActivateItem(vtData); IsNavBarEnabled = true; IsPlaybackEnabled = true; break; case ViewNavEvent.ViewId.CompassCalView: var ccData = IoC.Get <CompassCalViewModel>(); ActivateItem(ccData); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.ScreenDataView: var sdData = IoC.Get <ScreenDataBaseViewModel>(); ActivateItem(sdData); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.DownloadDataView: var dlData = IoC.Get <DownloadDataViewModel>(); ActivateItem(dlData); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.UpdateFirmwareView: var ufData = IoC.Get <UpdateFirmwareViewModel>(); ActivateItem(ufData); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.CompassUtilityView: var cuData = IoC.Get <CompassUtilityViewModel>(); ActivateItem(cuData); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.ExportDataView: var edData = IoC.Get <ExportDataViewModel>(); ActivateItem(edData); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.ModeView: var modeData = IoC.Get <ModeViewModel>(); ActivateItem(modeData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.ProjectView: var prjData = IoC.Get <ProjectViewModel>(); ActivateItem(prjData); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.NewProjectView: var newPrjData = IoC.Get <NewProjectViewModel>(); ActivateItem(newPrjData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.CommunicationsView: var commData = IoC.Get <CommunicationViewModel>(); ActivateItem(commData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.StorageView: var strgData = IoC.Get <StorageViewModel>(); ActivateItem(strgData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.LoadProjectsView: var loadPrjData = IoC.Get <LoadProjectsViewModel>(); ActivateItem(loadPrjData); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.AdcpConfigurationView: var adcpConfigData = IoC.Get <AdcpConfigurationViewModel>(); ActivateItem(adcpConfigData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.AveragingView: var avgData = IoC.Get <AveragingBaseViewModel>(); ActivateItem(avgData); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.BottomTrackOnView: var btOnData = IoC.Get <BottomTrackOnViewModel>(); btOnData.SetConfigKey(message.Param); ActivateItem(btOnData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.BinsView: var binData = IoC.Get <BinsViewModel>(); binData.SetConfigKey(message.Param); ActivateItem(binData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.BurstModeView: var burstData = IoC.Get <BurstModeViewModel>(); burstData.SetConfigKey(message.Param); ActivateItem(burstData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.PingTimingView: var pingTimingData = IoC.Get <PingTimingViewModel>(); if (pingTimingData.SetConfigKey(message.Param)) { ActivateItem(pingTimingData); } else { var adcpConfigData1 = IoC.Get <AdcpConfigurationViewModel>(); ActivateItem(adcpConfigData1); } IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.FrequencyView: var freqData = IoC.Get <FrequencyViewModel>(); ActivateItem(freqData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.BroadbandModeView: var bbData = IoC.Get <BroadbandModeViewModel>(); bbData.SetConfigKey(message.Param); ActivateItem(bbData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.NavSourcesView: var navSrcData = IoC.Get <VesselMountViewModel>(); ActivateItem(navSrcData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.SaveAdcpConfigurationView: var saveAdcpConfigData = IoC.Get <SaveAdcpConfigurationViewModel>(); ActivateItem(saveAdcpConfigData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.SalinityView: var salData = IoC.Get <SalinityViewModel>(); ActivateItem(salData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.TimeView: var timeData = IoC.Get <TimeViewModel>(); ActivateItem(timeData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.EnsembleIntervalView: var ceiData = IoC.Get <EnsembleIntervalViewModel>(); ActivateItem(ceiData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.SimpleCompassCalView: var simpleCCData = IoC.Get <SimpleCompassCalViewModel>(); ActivateItem(simpleCCData); IsNavBarEnabled = false; bool?flag = message.Param as bool?; if (flag.HasValue) { IsNavBarEnabled = flag.Value; } else { IsPlaybackEnabled = false; } break; case ViewNavEvent.ViewId.SimpleCompassCalWizardView: var simpleCCWizData = IoC.Get <SimpleCompassCalWizardViewModel>(); ActivateItem(simpleCCWizData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.ZeroPressureSensorView: var zeroPSData = IoC.Get <ZeroPressureSensorViewModel>(); ActivateItem(zeroPSData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.DeployAdcpView: var deployAdcpData = IoC.Get <DeployAdcpViewModel>(); ActivateItem(deployAdcpData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.ScanAdcpView: var scanAdcpData = IoC.Get <ScanAdcpViewModel>(); ActivateItem(scanAdcpData); IsNavBarEnabled = false; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.AdcpUtilitiesView: var adcpUtilData = IoC.Get <AdcpUtilitiesViewModel>(); ActivateItem(adcpUtilData); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.AdcpPredictionModelView: var predData = IoC.Get <AdcpPredictionModelViewModel>(); ActivateItem(predData); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.VesselMountOptionsView: var vmData = IoC.Get <VesselMountViewModel>(); ActivateItem(vmData); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.SelectPlaybackView: var selPlaybackData = IoC.Get <SelectPlaybackViewModel>(); ActivateItem(selPlaybackData); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.DvlSetupView: var dvlSetup = IoC.Get <DvlSetupViewModel>(); ActivateItem(dvlSetup); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.RtiCompassCalView: var rtiCompassCal = IoC.Get <RtiCompassCalViewModel>(); ActivateItem(rtiCompassCal); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.BackscatterView: var backScat = IoC.Get <BackscatterViewModel>(); ActivateItem(backScat); IsNavBarEnabled = true; IsPlaybackEnabled = true; break; case ViewNavEvent.ViewId.DiagnosticView: var diag = IoC.Get <DiagnosticsBaseViewModel>(); ActivateItem(diag); IsNavBarEnabled = true; IsPlaybackEnabled = false; break; case ViewNavEvent.ViewId.DataOutputView: var dataOut = IoC.Get <BaseDataOutputViewModel>(); ActivateItem(dataOut); IsNavBarEnabled = true; IsPlaybackEnabled = true; break; case ViewNavEvent.ViewId.DataFormatView: var dataFormat = IoC.Get <DataFormatViewModel>(); ActivateItem(dataFormat); IsNavBarEnabled = true; IsPlaybackEnabled = true; break; //case ViewNavEvent.ViewId.SettingsView: // var vmSettings = IoC.Get<SettingsViewModel>(); // ActivateItem(vmSettings); //break; default: break; } }