public async Task SearchMenuTextChanged() { // if (FastSearchCheck == false) collapseMenu(true); await SetupSideMenu(); List <TreeViewItemExCategory> newResult = new List <TreeViewItemExCategory>(); var cats = MainMenuCategories.Where(a => a.Name.ContainsIgniorCase(SearchMenuTextSide)); if (cats != null) { newResult = cats.ToList(); } //MainMenuCategories.ForEach(cat => //{ // var toleave = cat.Items.Where(a => a.Name.ContainsIgniorCase(SearchMenuText)); // var newCat = new TreeViewItemExCategory(cat.Name); // newCat.Items = new ObservableCollection<TreeViewItemEx>(toleave); // if (newCat.Items.Any()) // newResult.Add(newCat); //}); //if (newResult.Count == 1) //{ // // Open directly // var item = newResult.FirstOrDefault(); // var lines = item.Items; // if (lines != null && lines.Count == 1) // { // var line = lines.FirstOrDefault(); // await OpenMenuItem(line); // return; // } //} MenuIsExpanded = true; NotifyOfPropertyChange("MenuIsExpanded"); MainMenuCategories = newResult; NotifyOfPropertyChange("MainMenuCategories"); }
public async void SearchMenuTextChanged() { collapseMenu(true); await SetupSideMenu(); List <TreeViewItemExCategory> newResult = new List <TreeViewItemExCategory>(); MainMenuCategories.ForEach(cat => { var toleave = cat.Items.Where(a => a.Name.ContainsIgniorCase(SearchMenuText)); var newCat = new TreeViewItemExCategory(cat.Name); newCat.Items = new ObservableCollection <TreeViewItemEx>(toleave); if (newCat.Items.Any()) { newResult.Add(newCat); } }); MenuIsExpanded = true; NotifyOfPropertyChange("MenuIsExpanded"); MainMenuCategories = newResult; NotifyOfPropertyChange("MainMenuCategories"); }
public async Task SetupSideMenu() { MessageCount = DS.db.Count <CoreMessageBase>(a => a.DueDate <= DateTime.Now && a.StatusMessage == "En attente"); // Init actions MainMenuCategories.Clear(); // sideMenu.VerticalScrollBarVisibility = ScrollBarVisibility.Auto; // Load config models var models = new List <IDocument>(); var config = new XmlDocument(); config.Load("Modules/Models.xml"); // get ModulesERP var modules = DataHelpers.Modules;// GetMongoDataSync("ModuleErp") as IEnumerable<ModuleErp>; config.DocumentElement.RemoveAll(); var TopMenus = modules.Where(z => !string.IsNullOrEmpty(z.GroupeModule)).Select(a => _(a.GroupeModule)).Distinct(); if (MenuPanelLoaded == false) { MenuPanel.Children.Clear(); } foreach (var groupe in TopMenus) { var moduleOfGroupe = modules.Where(a => _(a.GroupeModule) == groupe).OrderBy(a => a.ModuleMenuIndex); //(2) string.Empty makes cleaner code XmlElement section = config.CreateElement(string.Empty, "section", string.Empty); section.SetAttribute("header", groupe); section.SetAttribute("icon", "Desktop"); if (MenuPanelLoaded == false) { string _icon = ""; var _savedIcon = ModuleIcons.ModuleIcon.TryGetValue(groupe, out _icon); //if (_savedIcon) //{ // icon found Button menubtn = new Button(); PackIcon pi = new PackIcon() { Kind = PackIconKind.CheckboxMarkedCircleOutline, Height = 22, Width = 22 }; try { pi.Kind = (PackIconKind)Enum.Parse(typeof(PackIconKind), _icon); pi.Height = 22; pi.Width = 22; } catch { } Border border = new Border(); border.BorderThickness = new Thickness(0); border.Margin = new Thickness(0); border.HorizontalAlignment = HorizontalAlignment.Left; border.Child = menubtn; var sp = new StackPanel { Orientation = Orientation.Horizontal }; sp.Children.Add(pi); sp.Children.Add(new TextBlock { Text = groupe, Foreground = Brushes.White, Margin = new Thickness(10, 0, 10, 0) }); menubtn.Content = sp; menubtn.Click += Menubtn_Click; menubtn.Tag = new ArrayList { groupe, pi }; ShadowAssist.SetShadowDepth(menubtn, ShadowDepth.Depth0); // menubtn.ToolTip = groupe; // BorderThickness="0" BorderBrush="#F5F6F7" menubtn.BorderThickness = new Thickness(0); // menubtn.Width = 55; menubtn.Height = 40; menubtn.Style = App.Current.TryFindResource("MenuButtonHd") as Style; border.Child = menubtn; MenuPanel.Children.Add(border); NotifyOfPropertyChange("MenuPanel"); //} } foreach (var module in moduleOfGroupe) { XmlElement document = config.CreateElement(string.Empty, "item", string.Empty); //header ="Tiers" icon="Users" description="" class="Ovresko.Generix.Core.Modules.Tier" document.SetAttribute("header", module.Libelle); document.SetAttribute("icon", "Users"); document.SetAttribute("class", module.ClassName); if (module.IsInstanceModule) { document.SetAttribute("instance", "getInstance"); } section.AppendChild(document); } config.DocumentElement.AppendChild(section); } MenuPanelLoaded = true; config.Save("Modules/Models.xml"); config.Load("Modules/Models.xml"); parentStack = new StackPanel(); // Iteerate over items foreach (XmlNode node in config.DocumentElement.ChildNodes) { // iterate over sections Console.Write(node.ChildNodes); var header = node.Attributes["header"].Value; // ExpanderMenu expander = new ExpanderMenu(); // var nodeTree = new TreeViewItemExCategory(header, new Li); var Children = new List <TreeViewItemEx>(); // var items = node.ChildNodes; foreach (XmlNode item in items) { var modelHeader = item.Attributes["header"].Value; var modelClass = item.Attributes["class"].Value; var modelIcon = item.Attributes["icon"].Value; var modelInstance = item.Attributes["instance"]?.Value; var itemNode = new TreeViewItemEx(modelHeader, modelHeader); itemNode.NodeXml = item; // itemNode.HeaderContent = new Button() { Content = modelHeader }; //var i = new FontAwesome.WPF.ImageAwesome(); //// i.Icon = (FontAwesomeIcon)Enum.Parse(typeof(FontAwesomeIcon), modelIcon); //i.Icon = FontAwesomeIcon.Plus; //i.Foreground = System.Windows.Media.Brushes.LightGray; // itemNode.HeaderIcon = modelIcon; Children.Add(itemNode); } var Category = new TreeViewItemExCategory(header, Children.ToArray()); MainMenuCategories.Add(Category); } NotifyOfPropertyChange("sideMenu"); }