diff --git a/Users/UsersManager.cs b/Users/UsersManager.cs index 0e769d7..a602886 100644 --- a/Users/UsersManager.cs +++ b/Users/UsersManager.cs @@ -79,6 +79,19 @@ namespace Akari.Provider.WaveshareUART.Users return false; } + public bool Remove(IEnumerable users) + { + foreach (var user in users) + { + if (!Remove(user)) + { + return false; + } + } + + return true; + } + public bool Clear() { _users.Clear(); diff --git a/Views/ManageUsersDisplay.cs b/Views/ManageUsersDisplay.cs index 5b26dae..e52d792 100644 --- a/Views/ManageUsersDisplay.cs +++ b/Views/ManageUsersDisplay.cs @@ -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(); } } } diff --git a/Views/TUIManager.cs b/Views/TUIManager.cs index 0ba4d83..11ec7de 100644 --- a/Views/TUIManager.cs +++ b/Views/TUIManager.cs @@ -208,6 +208,8 @@ namespace Akari.Provider.WaveshareUART.Views private void ManageUsersButton_Clicked() { Application.Run(new ManageUsersDisplay()); + + UpdateUserCount(); } private void ChangeConfig()