static NavigationContextConfig GetContextConfig(NavigationData navigationData) { if (navigationData == null) return null; Dictionary<string, object> contextData = new Dictionary<string, object>(); contextData[NavigationData.NAVIGATION_DATA] = navigationData; return new NavigationContextConfig() { NavigationContextDisplayLabel = navigationData.DisplayName, AdditionalContextVariables = contextData }; }
static void PushTransientState(string name, string displayLabel, NavigationData navigationData) { WorkflowState newState = WorkflowState.CreateTransientState(name, displayLabel, false, "emulators", true, WorkflowType.Workflow); IWorkflowManager workflowManager = ServiceRegistration.Get<IWorkflowManager>(); workflowManager.NavigatePushTransientAsync(newState, GetContextConfig(navigationData)); }
static void PushState(Guid stateId, NavigationData navigationData) { IWorkflowManager workflowManager = ServiceRegistration.Get<IWorkflowManager>(); workflowManager.NavigatePush(stateId, GetContextConfig(navigationData)); }
NavigationData getStartupNavigationData() { NavigationData navigationData = new NavigationData(); List<ListItem> items; switch (startupState) { case StartupState.GROUPS: navigationData.DisplayName = "[Emulators.Groups]"; var groups = RomGroup.GetAll(); items = groups.Select(g => (ListItem)new GroupViewModel(g, this)).ToList(); break; case StartupState.PCGAMES: navigationData.DisplayName = "[Emulators.PCGames]"; var games = Emulator.GetPC().Games; items = games.Select(g => (ListItem)new GameViewModel(g, this)).ToList(); break; case StartupState.FAVOURITES: navigationData.DisplayName = "[Emulators.Favourites]"; BaseCriteria favCriteria = new BaseCriteria(DBField.GetField(typeof(Game), "Favourite"), "=", true); var favourites = EmulatorsCore.Database.Get<Game>(favCriteria); items = favourites.Select(g => (ListItem)new GameViewModel(g, this)).ToList(); break; case StartupState.EMULATORS: default: navigationData.DisplayName = "[Emulators.Emulators]"; var emulators = Emulator.GetAll(true); items = emulators.Select(e => (ListItem)new EmulatorViewModel(e, this)).ToList(); break; } navigationData.StartupState = startupState; navigationData.ItemsList = items; return navigationData; }
void updateState(NavigationContext context) { bool updateList = false; navigationData = GetNavigationData(context); if (context.WorkflowState.StateId == Guids.ViewItemsState && (navigationData == null || navigationData.StartupState != startupState)) { updateList = true; navigationData = getStartupNavigationData(); context.SetContextVariable(NavigationData.NAVIGATION_DATA, navigationData); } if (navigationData != null) { Header = navigationData.DisplayName; ItemsList items = Items; if (items != null && updateList) { items.Clear(); foreach (ListItem item in navigationData.ItemsList) items.Add(item); items.FireChange(); } else { items = new ItemsList(); foreach (ListItem item in navigationData.ItemsList) items.Add(item); Items = items; } } }
public void GroupSelected(RomGroup group) { group.Refresh(); List<ListItem> items = new List<ListItem>(); foreach (DBItem item in group.GroupItems) { Game game = item as Game; if (game != null) { items.Add(new GameViewModel(game, this)); continue; } RomGroup subGroup = item as RomGroup; if (subGroup != null) { items.Add(new GroupViewModel(subGroup, this)); continue; } Emulator emulator = item as Emulator; if (emulator != null) items.Add(new EmulatorViewModel(emulator, this)); } NavigationData navigationData = new NavigationData() { DisplayName = group.Title, ItemsList = items }; PushTransientState("emuSubGroup", navigationData.DisplayName, navigationData); }
public void EmulatorSelected(Emulator emulator) { List<ListItem> items = emulator.Games.Select(g => (ListItem)new GameViewModel(g, this)).ToList(); NavigationData navigationData = new NavigationData() { DisplayName = emulator.Title, ItemsList = items }; PushTransientState("emuGames", navigationData.DisplayName, navigationData); }