Add return type to UsersManager methods

This commit is contained in:
2021-01-23 13:20:49 +01:00
parent 79df07e7fc
commit 25c9ee5771
5 changed files with 127 additions and 40 deletions

View File

@@ -98,6 +98,7 @@
<Compile Include="Views\FingerprintDialog.cs" /> <Compile Include="Views\FingerprintDialog.cs" />
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Views\ManageUsersDisplay.cs" />
<Compile Include="Views\SettingsDisplay.cs" /> <Compile Include="Views\SettingsDisplay.cs" />
<Compile Include="Views\SleepDisplay.cs" /> <Compile Include="Views\SleepDisplay.cs" />
<Compile Include="Views\TUIManager.cs" /> <Compile Include="Views\TUIManager.cs" />

View File

@@ -19,7 +19,7 @@ namespace Akari.Provider.WaveshareUART.Users
[YamlIgnore()] [YamlIgnore()]
public int Count => Position - Start; public int Count => Position - Start;
[YamlIgnore()] [YamlIgnore()]
public IEnumerable<int> ValidPositions => Enumerable.Range(Start, Count); public IEnumerable<ushort> ValidPositions => Enumerable.Range(Start, Count).Cast<ushort>();
public User() public User()
{ {

View File

@@ -67,22 +67,25 @@ namespace Akari.Provider.WaveshareUART.Users
Save(); Save();
} }
public void Remove(User user) public bool Remove(User user)
{ {
_users.Remove(user); if (_users.Remove(user))
{
Save();
// TODO Remove fingerprints return true;
}
Save(); return false;
} }
public void Clear() public bool Clear()
{ {
_users.Clear(); _users.Clear();
// TODO Remove fingerprints
Save(); Save();
return true;
} }
private void Save() private void Save()

112
Views/ManageUsersDisplay.cs Normal file
View File

@@ -0,0 +1,112 @@
using Akari.Provider.WaveshareUART.Users;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Terminal.Gui;
using WaveshareUARTFingerprintSensor;
namespace Akari.Provider.WaveshareUART.Views
{
public class ManageUsersDisplay : Toplevel
{
public UsersManager UsersManager => WaveshareUARTProvider.Instance.UsersManager;
private ListView _listView;
public ManageUsersDisplay()
{
Init();
}
private void Init()
{
Modal = true;
ColorScheme = Colors.Error;
// Creates the top-level window to show
var win = new Window("Manage Users")
{
X = 0,
Y = 0,
// By using Dim.Fill(), it will automatically resize without manual intervention
Width = Dim.Fill(),
Height = Dim.Fill()
};
win.ColorScheme = Colors.ColorSchemes["Dialog"];
Add(win);
// Window Content
_listView = new ListView()
{
X = 2,
Y = 1,
Height = Dim.Fill() - 1,
Width = Dim.Fill(),
AllowsMarking = true
};
_listView.OpenSelectedItem += ListView_OpenSelectedItem;
_listView.SetSource(UsersManager.Users.ToList());
var addButton = new Button("_Add")
{
X = Pos.Right(this) - 54,
Y = Pos.Bottom(this) - 3
};
addButton.Clicked += AddButton_Clicked;
var deleteButton = new Button("_Delete Selected")
{
X = Pos.Right(addButton) + 1,
Y = Pos.Top(addButton)
};
deleteButton.Clicked += DeleteButton_Clicked;
var deleteAllButton = new Button("Delete All")
{
X = Pos.Right(deleteButton) + 1,
Y = Pos.Top(deleteButton)
};
deleteAllButton.Clicked += DeleteAllButton_Clicked;
var quitButton = new Button("_Quit")
{
X = Pos.Right(deleteAllButton) + 1,
Y = Pos.Top(deleteAllButton)
};
quitButton.Clicked += () => { Application.RequestStop(); };
win.Add(_listView, addButton, deleteButton, deleteAllButton, quitButton);
}
private void ListView_OpenSelectedItem(ListViewItemEventArgs item)
{
}
private void AddButton_Clicked()
{
}
private void DeleteButton_Clicked()
{
var marked = UsersManager.Users.Where((item, index) => _listView.Source.IsMarked(index));
MessageBox.Query("Selected", string.Join(", ", marked), "Ok");
}
private void DeleteAllButton_Clicked()
{
}
}
}

View File

@@ -81,21 +81,14 @@ namespace Akari.Provider.WaveshareUART.Views
var manageUsersButton = new Button("_Manage Users") var manageUsersButton = new Button("_Manage Users")
{ {
X = Pos.Center(), X = Pos.Center(),
Y = Pos.Center() - 3 Y = Pos.Center() - 1
}; };
manageUsersButton.Clicked += ManageUsersButton_Clicked; manageUsersButton.Clicked += ManageUsersButton_Clicked;
var addUserButton = new Button("_Add User")
{
X = Pos.Center(),
Y = Pos.Bottom(manageUsersButton) + 1
};
addUserButton.Clicked += AddUserButton_Clicked;
var setComparisonLevelButton = new Button("Set Comparison _Level") var setComparisonLevelButton = new Button("Set Comparison _Level")
{ {
X = Pos.Center(), X = Pos.Center(),
Y = Pos.Bottom(addUserButton) + 1 Y = Pos.Bottom(manageUsersButton) + 1
}; };
setComparisonLevelButton.Clicked += SetComparisonLevelButton_Clicked; setComparisonLevelButton.Clicked += SetComparisonLevelButton_Clicked;
@@ -111,7 +104,6 @@ namespace Akari.Provider.WaveshareUART.Views
_comparisonLevelLabel, _comparisonLevelLabel,
_userCountLabel, _userCountLabel,
manageUsersButton, manageUsersButton,
addUserButton,
setComparisonLevelButton, setComparisonLevelButton,
quitButton quitButton
); );
@@ -215,28 +207,7 @@ namespace Akari.Provider.WaveshareUART.Views
private void ManageUsersButton_Clicked() private void ManageUsersButton_Clicked()
{ {
var dialog = new FingerprintDialog("Read Fingerprint", "Can't read fingerprint, try to place your finger flat on the sensor"); Application.Run(new ManageUsersDisplay());
(ushort userID, UserPermission permission) userInfo = default;
Task.Run(() =>
{
if (FingerprintSensor.TryComparison1N(out userInfo))
{
dialog.Cancel();
}
else
{
dialog.CancelAndShowError();
}
});
dialog.Show();
if (userInfo != default)
{
MessageBox.Query("Read Fingerprint", $"Successfully read fingerprint\n\nUser ID: {userInfo.userID}\nPermissions: {userInfo.permission}\n ", "Ok");
}
} }
private void ChangeConfig() private void ChangeConfig()