Add delete commands to ManageUsersDisplay

This commit is contained in:
2021-01-23 14:35:44 +01:00
parent 25c9ee5771
commit b7436ed451
3 changed files with 43 additions and 3 deletions

View File

@@ -79,6 +79,19 @@ namespace Akari.Provider.WaveshareUART.Users
return false;
}
public bool Remove(IEnumerable<User> users)
{
foreach (var user in users)
{
if (!Remove(user))
{
return false;
}
}
return true;
}
public bool Clear()
{
_users.Clear();

View File

@@ -54,7 +54,7 @@ namespace Akari.Provider.WaveshareUART.Views
};
_listView.OpenSelectedItem += ListView_OpenSelectedItem;
_listView.SetSource(UsersManager.Users.ToList());
UpdateList();
var addButton = new Button("_Add")
{
@@ -87,6 +87,13 @@ namespace Akari.Provider.WaveshareUART.Views
win.Add(_listView, addButton, deleteButton, deleteAllButton, quitButton);
}
private void UpdateList()
{
_listView.SetSource(UsersManager.Users.ToList());
_listView.SetFocus();
}
private void ListView_OpenSelectedItem(ListViewItemEventArgs item)
{
@@ -99,14 +106,32 @@ namespace Akari.Provider.WaveshareUART.Views
private void DeleteButton_Clicked()
{
var marked = UsersManager.Users.Where((item, index) => _listView.Source.IsMarked(index));
var marked = UsersManager.Users.Where((_, index) => _listView.Source.IsMarked(index)).ToHashSet();
MessageBox.Query("Selected", string.Join(", ", marked), "Ok");
if (UsersManager.Remove(marked))
{
MessageBox.Query("Delete Users", $"Successfully deleted {marked.Count} user{(marked.Count > 1 ? "s" : "")}", "Ok");
}
else
{
MessageBox.ErrorQuery("Delete Users", "Can't delete all selected users", "Ok");
}
UpdateList();
}
private void DeleteAllButton_Clicked()
{
if (UsersManager.Clear())
{
MessageBox.Query("Delete Users", $"Successfully deleted all users", "Ok");
}
else
{
MessageBox.Query("Delete Users", $"Can't delete all users", "Ok");
}
UpdateList();
}
}
}

View File

@@ -208,6 +208,8 @@ namespace Akari.Provider.WaveshareUART.Views
private void ManageUsersButton_Clicked()
{
Application.Run(new ManageUsersDisplay());
UpdateUserCount();
}
private void ChangeConfig()