71 lines
1.8 KiB
C#
71 lines
1.8 KiB
C#
using System.Linq;
|
|
using Content.Shared._Sunrise.Messenger;
|
|
using Robust.Client.AutoGenerated;
|
|
using Robust.Client.UserInterface.Controls;
|
|
using Robust.Client.UserInterface.CustomControls;
|
|
using Robust.Client.UserInterface.XAML;
|
|
|
|
namespace Content.Client._Sunrise.CartridgeLoader.Cartridges;
|
|
|
|
[GenerateTypedNameReferences]
|
|
public sealed partial class AddUserDialog : DefaultWindow
|
|
{
|
|
public event Action<string>? OnUserSelected;
|
|
public event Action? OnClose;
|
|
|
|
private List<MessengerUser> _availableUsers = new();
|
|
|
|
public AddUserDialog()
|
|
{
|
|
RobustXamlLoader.Load(this);
|
|
Title = Loc.GetString("messenger-add-user-title");
|
|
|
|
SearchInput.OnTextChanged += _ => UpdateUsersList();
|
|
CloseButton.OnPressed += _ =>
|
|
{
|
|
OnClose?.Invoke();
|
|
Close();
|
|
};
|
|
}
|
|
|
|
public void SetTitle(string title)
|
|
{
|
|
Title = title;
|
|
}
|
|
|
|
public void SetAvailableUsers(List<MessengerUser> users)
|
|
{
|
|
_availableUsers = users;
|
|
UpdateUsersList();
|
|
}
|
|
|
|
private void UpdateUsersList()
|
|
{
|
|
UsersList.RemoveAllChildren();
|
|
var searchText = SearchInput.Text.ToLowerInvariant();
|
|
|
|
var filteredUsers = _availableUsers.Where(u =>
|
|
string.IsNullOrEmpty(searchText) ||
|
|
(u.Name?.ToLowerInvariant().Contains(searchText) ?? false))
|
|
.ToList();
|
|
|
|
foreach (var user in filteredUsers)
|
|
{
|
|
var userButton = new Button
|
|
{
|
|
Text = user.Name,
|
|
HorizontalExpand = true,
|
|
Margin = new Thickness(2)
|
|
};
|
|
|
|
var userId = user.UserId;
|
|
userButton.OnPressed += _ =>
|
|
{
|
|
OnUserSelected?.Invoke(userId);
|
|
Close();
|
|
};
|
|
|
|
UsersList.AddChild(userButton);
|
|
}
|
|
}
|
|
}
|