using System; using System.Collections.Generic; using CommunityToolkit.Mvvm.DependencyInjection; using PSCHelpdesk.Shared.Menu; using PSCHelpdesk.Shared.Service; using PSCHelpdesk.ViewModels; using ReactiveUI; namespace PSCHelpdesk.Services; public class MenuService: ReactiveObject, IMenuService { private List menuItems = new List(); private List menuOptionItems = new List(); public event EventHandler MenuChanged; public List MenuItems { get => this.menuItems; private set => this.RaiseAndSetIfChanged(ref this.menuItems, value); } /// /// Gets the list of options items shown in the hamburger menu (at the bottom). /// public List MenuOptionItems { get => this.menuOptionItems; private set => this.RaiseAndSetIfChanged(ref this.menuOptionItems, value); } /// /// Gets or sets the currently selected Hamburger Menu Tab. /// public void CreateMenu() { this.MenuItems.Clear(); this.MenuOptionItems.Clear(); var pluginTab = new Item() { Header = "Plugins", CommandParameter = Ioc.Default.GetService(), }; this.MenuItems.Add(pluginTab); OnMenuChanged(EventArgs.Empty); } public void AddMenuItem(Item item) { this.MenuItems.Add(item); OnMenuChanged(EventArgs.Empty); } protected virtual void OnMenuChanged(EventArgs e) { MenuChanged?.Invoke(this, e); } public Item GetMenuOptionByLabel(string coreSettingsActiveMenuItem) { foreach (var menuItem in this.menuItems) { if (menuItem.Header == coreSettingsActiveMenuItem) { return menuItem; } } foreach (var menuItem in this.menuOptionItems) { if (menuItem.Header == coreSettingsActiveMenuItem) { return menuItem; } } return null; } }