Files增强打开文件

This commit is contained in:
2026-03-24 20:17:10 +08:00
parent 4dd47bfe22
commit 10e3a9da96
5 changed files with 167 additions and 8 deletions

View File

@@ -294,10 +294,84 @@ namespace CMLeonOS.Gui.Apps
currentCategoryWindow = users;
users.DrawString("Users", Color.DarkBlue, 12, 12);
users.DrawImageAlpha(Icons.Icon_Info, 12, window.Height - 16 - 12);
users.DrawString("Double-click on a user for info.", Color.Gray, 36, window.Height - 16 - 12);
users.DrawString("Double-click a user for details.", Color.Gray, 36, window.Height - 16 - 12);
wm.AddWindow(users);
Table usersTable = new Table(users, 12, 40, users.Width - 24, users.Height - 40 - 12 - 16 - 12);
bool canManageUsers = UserSystem.CurrentLoggedInUser != null && UserSystem.CurrentLoggedInUser.Admin;
Table usersTable = null;
if (canManageUsers)
{
Button createUser = new Button(users, 12, 40, 108, 22);
createUser.Text = "Create User";
createUser.OnClick = (_, _) =>
{
PromptBox promptBox = new PromptBox(this, "Create User", "Enter username and password.\nFormat: username password", "newuser password", (string value) =>
{
string[] parts = (value ?? string.Empty).Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length < 2)
{
ShowMessage("Users", "Use the format: username password");
return;
}
bool created = UserManager.AddUser(parts[0], parts[1], false);
if (!created)
{
ShowMessage("Users", "Failed to create user.");
return;
}
ShowMessage("Users", $"User '{parts[0]}' created.");
ShowUsersCategory();
});
promptBox.Show();
};
wm.AddWindow(createUser);
Button deleteUser = new Button(users, 130, 40, 108, 22);
deleteUser.Text = "Delete User";
deleteUser.OnClick = (_, _) =>
{
if (usersTable.SelectedCellIndex == -1)
{
ShowMessage("Users", "Select a user first.");
return;
}
User selectedUser = (User)usersTable.Cells[usersTable.SelectedCellIndex].Tag;
if (selectedUser == null)
{
ShowMessage("Users", "Select a valid user first.");
return;
}
if (UserSystem.CurrentLoggedInUser != null
&& selectedUser.Username.Equals(UserSystem.CurrentLoggedInUser.Username, StringComparison.OrdinalIgnoreCase))
{
ShowMessage("Users", "You cannot delete the current logged in user.");
return;
}
bool deleted = UserManager.RemoveUser(selectedUser.Username);
if (!deleted)
{
ShowMessage("Users", "Failed to delete user.");
return;
}
ShowMessage("Users", $"User '{selectedUser.Username}' deleted.");
ShowUsersCategory();
};
wm.AddWindow(deleteUser);
}
else
{
users.DrawString("Only administrators can create or delete users.", Color.Gray, 12, 44);
}
int tableY = canManageUsers ? 74 : 40;
usersTable = new Table(users, 12, tableY, users.Width - 24, users.Height - tableY - 12 - 16 - 12);
foreach (User user in UserSystem.GetUsers())
{
usersTable.Cells.Add(new TableCell(user.Admin ? Icons.Icon_Admin : Icons.Icon_User, user.Username, tag: user));