public SettingsVm(IMediator mediator, IResourceProxy resource) { var database = mediator.Send(new GetDatabaseQuery()).GetAwaiter().GetResult(); var menuItems = new ObservableCollection <ListMenuItemVm> { new ListMenuItemVm { Title = resource.GetResourceValue("SettingsMenuItemNew"), Group = resource.GetResourceValue("SettingsMenuGroupApplication"), SymbolIcon = Symbol.Add, PageType = typeof(SettingsNewDatabasePage), IsSelected = true }, new ListMenuItemVm { Title = resource.GetResourceValue("SettingsMenuItemGeneral"), Group = resource.GetResourceValue("SettingsMenuGroupApplication"), SymbolIcon = Symbol.Setting, PageType = typeof(SettingsGeneralPage) }, new ListMenuItemVm { Title = resource.GetResourceValue("SettingsMenuItemSecurity"), Group = resource.GetResourceValue("SettingsMenuGroupDatabase"), SymbolIcon = Symbol.Permissions, PageType = typeof(SettingsSecurityPage), IsEnabled = database.IsOpen }, new ListMenuItemVm { Title = resource.GetResourceValue("SettingsMenuItemHistory"), Group = resource.GetResourceValue("SettingsMenuGroupDatabase"), SymbolIcon = Symbol.Undo, PageType = typeof(SettingsHistoryPage), IsEnabled = database.IsOpen }, new ListMenuItemVm { Title = resource.GetResourceValue("SettingsMenuItemRecycleBin"), Group = resource.GetResourceValue("SettingsMenuGroupDatabase"), SymbolIcon = Symbol.Delete, PageType = typeof(SettingsRecycleBinPage), IsEnabled = database.IsOpen }, new ListMenuItemVm { Title = resource.GetResourceValue("SettingsMenuItemCredentials"), Group = resource.GetResourceValue("SettingsMenuGroupDatabase"), SymbolIcon = Symbol.Account, PageType = typeof(SettingsCredentialsPage), IsEnabled = database.IsOpen } }; SelectedItem = menuItems.FirstOrDefault(m => m.IsSelected); MenuItems = from item in menuItems group item by item.Group into grp orderby grp.Key select grp; }
public async Task Initialize(Frame referenceFrame, Frame destinationFrame, FileInfo databaseFile = null) { var database = await _mediator.Send(new GetDatabaseQuery()); var mainMenuItems = new ObservableCollection <MainMenuItemVm> { new MainMenuItemVm { Title = _resource.GetResourceValue("MainMenuItemOpen"), PageType = typeof(OpenDatabasePage), Destination = destinationFrame, Parameter = databaseFile, SymbolIcon = Symbol.Page2, IsSelected = databaseFile != null }, new MainMenuItemVm { Title = _resource.GetResourceValue("MainMenuItemNew"), PageType = typeof(NewDatabasePage), Destination = destinationFrame, SymbolIcon = Symbol.Add }, new MainMenuItemVm { Title = _resource.GetResourceValue("MainMenuItemSave"), PageType = typeof(SaveDatabasePage), Destination = destinationFrame, Parameter = referenceFrame, SymbolIcon = Symbol.Save, IsSelected = database.IsOpen, IsEnabled = database.IsOpen }, new MainMenuItemVm { Title = _resource.GetResourceValue("MainMenuItemRecent"), PageType = typeof(RecentDatabasesPage), Destination = destinationFrame, Parameter = referenceFrame, SymbolIcon = Symbol.Copy, IsSelected = !database.IsOpen && _recent.EntryCount > 0, IsEnabled = _recent.EntryCount > 0 }, new MainMenuItemVm { Title = _resource.GetResourceValue("MainMenuItemSettings"), PageType = typeof(SettingsPage), Destination = referenceFrame, SymbolIcon = Symbol.Setting }, new MainMenuItemVm { Title = _resource.GetResourceValue("MainMenuItemAbout"), PageType = typeof(AboutPage), Destination = destinationFrame, SymbolIcon = Symbol.Help }, new MainMenuItemVm { Title = _resource.GetResourceValue("MainMenuItemDonate"), PageType = typeof(DonatePage), Destination = destinationFrame, SymbolIcon = Symbol.Shop } }; // Auto-select the Recent Items menu item if the conditions are met SelectedItem = mainMenuItems.FirstOrDefault(m => m.IsSelected); // Add currently opened database to the menu if (database.IsOpen) { mainMenuItems.Add(new MainMenuItemVm { Title = database.Name, PageType = typeof(GroupDetailPage), Destination = referenceFrame, Parameter = new NavigationItem { Id = database.RootGroupId }, Group = "Databases", SymbolIcon = Symbol.ProtectedDocument }); } MainMenuItems = from item in mainMenuItems group item by item.Group into grp orderby grp.Key select grp; }