mirror of
https://github.com/wismna/ModernKeePass.git
synced 2025-10-04 08:00:16 -04:00
WIP Windows 10
Dependencies finally installed Removal of useless code Big cleanup in XAML styles (override colors the correct way)
This commit is contained in:
99
Win10App/ViewModels/ListItems/GroupItemVm.cs
Normal file
99
Win10App/ViewModels/ListItems/GroupItemVm.cs
Normal file
@@ -0,0 +1,99 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Collections.Specialized;
|
||||
using ModernKeePass.Domain.Entities;
|
||||
using ModernKeePass.Domain.Enums;
|
||||
using ModernKeePass.Domain.Interfaces;
|
||||
|
||||
namespace ModernKeePass.ViewModels.ListItems
|
||||
{
|
||||
public class GroupItemVm: NotifyPropertyChangedBase
|
||||
{
|
||||
private readonly IDatabaseService _databaseService;
|
||||
//private Group _reorderedGroup;
|
||||
private bool _isEditMode;
|
||||
|
||||
public GroupEntity GroupEntity { get; }
|
||||
public GroupItemVm ParentVm { get; }
|
||||
|
||||
public bool IsEditMode
|
||||
{
|
||||
get => _isEditMode;
|
||||
set
|
||||
{
|
||||
_isEditMode = value;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public string Text
|
||||
{
|
||||
get => GroupEntity.Name;
|
||||
set
|
||||
{
|
||||
GroupEntity.Name = value;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<EntryItemVm> SubEntries
|
||||
{
|
||||
get
|
||||
{
|
||||
var subEntries = new List<EntryItemVm>();
|
||||
subEntries.AddRange(Entries);
|
||||
foreach (var group in Children)
|
||||
{
|
||||
subEntries.AddRange(group.SubEntries);
|
||||
}
|
||||
|
||||
return subEntries;
|
||||
}
|
||||
}
|
||||
|
||||
public Icon Symbol => GroupEntity.Icon;
|
||||
public List<EntryItemVm> Entries { get; }
|
||||
public ObservableCollection<GroupItemVm> Children { get; set; } = new ObservableCollection<GroupItemVm>();
|
||||
|
||||
public GroupItemVm(GroupEntity groupEntity, GroupItemVm parent): this(App.Container.Resolve<IDatabaseService>(), groupEntity, parent)
|
||||
{ }
|
||||
|
||||
public GroupItemVm(IDatabaseService databaseService, GroupEntity groupEntity, GroupItemVm parentVm)
|
||||
{
|
||||
_databaseService = databaseService;
|
||||
GroupEntity = groupEntity;
|
||||
ParentVm = parentVm;
|
||||
|
||||
Entries = new List<EntryItemVm>();
|
||||
foreach (var entry in groupEntity.Entries)
|
||||
{
|
||||
Entries.Add(new EntryItemVm(entry, this));
|
||||
}
|
||||
|
||||
foreach (var subGroup in groupEntity.SubGroups)
|
||||
{
|
||||
Children.Add(new GroupItemVm(subGroup, this));
|
||||
}
|
||||
Children.CollectionChanged += Children_CollectionChanged;
|
||||
}
|
||||
|
||||
// TODO: not triggered when reordering
|
||||
private void Children_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
|
||||
{
|
||||
switch (e.Action)
|
||||
{
|
||||
case NotifyCollectionChangedAction.Remove:
|
||||
/*var oldIndex = (uint)e.OldStartingIndex;
|
||||
_reorderedGroup = Group.SubGroups.GetAt(oldIndex);
|
||||
Group.SubGroups.RemoveAt(oldIndex);*/
|
||||
_databaseService.DeleteEntity((Entity)e.OldItems[0]);
|
||||
break;
|
||||
case NotifyCollectionChangedAction.Add:
|
||||
/*if (_reorderedGroup == null) Group.AddGroup(((GroupItem)e.NewItems[0]).Group, true);
|
||||
else Group.Groups.Insert((uint)e.NewStartingIndex, _reorderedGroup);*/
|
||||
_databaseService.AddEntity(ParentVm.GroupEntity, (Entity)e.NewItems[0]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user