106 lines
3.1 KiB
C#
106 lines
3.1 KiB
C#
using qtcnet_client.Controls;
|
|
using QtCNETAPI.Dtos.User;
|
|
using System.ComponentModel;
|
|
namespace qtcnet_client.Forms
|
|
{
|
|
public partial class ChatRoomForm : Form
|
|
{
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
|
public string RoomId { get; set; } = string.Empty;
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
|
|
public string RoomName { get; set; } = "Room";
|
|
public string SentMessage { get; private set; } = string.Empty;
|
|
|
|
public event EventHandler? OnSend;
|
|
public event EventHandler? OnClose;
|
|
|
|
public ChatRoomForm()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void ChatRoomForm_Load(object sender, EventArgs e)
|
|
{
|
|
Text = $"QtC.NET Chat Room - {RoomName}";
|
|
lblRoomName.Text = RoomName;
|
|
}
|
|
|
|
private void rtxtChatbox_KeyDown(object sender, KeyEventArgs e)
|
|
{
|
|
if (e.KeyCode == Keys.Enter)
|
|
{
|
|
if (ValidateChatBox())
|
|
{
|
|
SentMessage = rtxtChatbox.Text;
|
|
OnSend?.Invoke(this, EventArgs.Empty);
|
|
rtxtChatbox.Clear();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void btnSend_Click(object sender, EventArgs e)
|
|
{
|
|
if (ValidateChatBox())
|
|
{
|
|
SentMessage = rtxtChatbox.Text;
|
|
OnSend?.Invoke(this, EventArgs.Empty);
|
|
rtxtChatbox.Clear();
|
|
}
|
|
}
|
|
|
|
private void ChatRoomForm_FormClosed(object sender, FormClosedEventArgs e)
|
|
{
|
|
OnClose?.Invoke(this, EventArgs.Empty);
|
|
Close();
|
|
}
|
|
|
|
public void AddUsersToRoomList(List<UserInformationDto> users)
|
|
{
|
|
lvUsers.SuspendLayout();
|
|
|
|
lvUsers.Items.Clear();
|
|
|
|
List<ListViewItem> lvis = [];
|
|
foreach (UserInformationDto user in users)
|
|
{
|
|
lvis.Add(new ListViewItem
|
|
{
|
|
Tag = user.Id,
|
|
Text = user.Username,
|
|
ImageIndex = user.Status
|
|
});
|
|
}
|
|
|
|
lvUsers.Items.AddRange([.. lvis.DistinctBy(u => u.Tag)]);
|
|
|
|
lvUsers.ResumeLayout(true);
|
|
}
|
|
|
|
public void AddUserToRoomList(UserInformationDto user)
|
|
{
|
|
ListViewItem lvi = new()
|
|
{
|
|
Tag = user.Id,
|
|
Text = user.Username,
|
|
ImageIndex = user.Status
|
|
};
|
|
|
|
lvUsers.Items.Add(lvi);
|
|
}
|
|
|
|
public void AddMessage(MessageControl messageCtrl)
|
|
{
|
|
messageCtrl.Width = flpMessages.ClientSize.Width - 10;
|
|
messageCtrl.Margin = new Padding(0, 0, 0, 6);
|
|
|
|
flpMessages.Controls.Add(messageCtrl);
|
|
flpMessages.ScrollControlIntoView(messageCtrl);
|
|
}
|
|
|
|
private bool ValidateChatBox()
|
|
{
|
|
return !string.IsNullOrWhiteSpace(rtxtChatbox.Text) || !string.IsNullOrEmpty(rtxtChatbox.Text);
|
|
}
|
|
}
|
|
}
|