using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using Windows.UI.Xaml.Controls; using ModernKeePass.Mappings; using ModernKeePassLib; namespace ModernKeePass.ViewModels { public class GroupVm : INotifyPropertyChanged { private PwGroup _pwGroup; public ObservableCollection Entries { get; set; } public ObservableCollection Groups { get; set; } public string Name { get; set; } public int EntryCount => Entries.Count; public int GroupCount => Groups.Count; public Symbol IconSymbol { get { var result = PwIconToSegoeMapping.GetSymbolFromIcon(_pwGroup.IconId); return result == Symbol.More ? Symbol.Folder : result; } } public GroupVm() { Name = "GroupName"; Entries = new ObservableCollection(); Groups = new ObservableCollection(); } public GroupVm(PwGroup pwGroup) { _pwGroup = pwGroup; Name = pwGroup.Name; Entries = new ObservableCollection(pwGroup.Entries.Select(e => new EntryVm(e))); //Entries.Insert(0, new EntryVm { Title = " + New entry" }); Groups = new ObservableCollection(pwGroup.Groups.Select(g => new GroupVm(g))); //Groups.Insert(0, new GroupVm { Name = " + New group" }); } public void CreateNewGroup(string title) { var pwGroup = new PwGroup(true, true, title, PwIcon.Folder); _pwGroup.AddGroup(pwGroup, true); Groups.Add(new GroupVm(pwGroup)); NotifyPropertyChanged("Groups"); } public void CreateNewEntry(string title) { var pwEntry = new PwEntry(true, true); _pwGroup.AddEntry(pwEntry, true); Entries.Add(new EntryVm(pwEntry)); NotifyPropertyChanged("Entries"); } public event PropertyChangedEventHandler PropertyChanged; public void NotifyPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } }