From 086e5d157c75d898465f2c4a14eedbc348b29970 Mon Sep 17 00:00:00 2001 From: JacobTech Date: Mon, 2 Jan 2023 23:13:03 -0500 Subject: [PATCH] Friend control to resolve #8 --- Luski/GUI/MainScreen/UI/Friend.cs | 43 +++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Luski/GUI/MainScreen/UI/Friend.cs diff --git a/Luski/GUI/MainScreen/UI/Friend.cs b/Luski/GUI/MainScreen/UI/Friend.cs new file mode 100644 index 0000000..43fa4a0 --- /dev/null +++ b/Luski/GUI/MainScreen/UI/Friend.cs @@ -0,0 +1,43 @@ +using GraphicsManager.Interfaces; +using GraphicsManager.Objects; +using GraphicsManager.Objects.Core; +using Luski.GUI.MainScreen.Interfaces; +using Luski.net.JsonTypes; + +namespace Luski.GUI.MainScreen.UI; + +public class Friend : UserControl, IChannelPick +{ + public SocketRemoteUser User; + + public SocketTextChannel Channel + { + get + { + return User.Channel; + } + } + private Rectangle r; + private Label Username, Status; + public Friend(SocketRemoteUser person) + { + User = person; + Size = new(370, 96); + BackgroundColor = new(34, 34, 34, 255); + Controls.Add( r = new Rectangle(new Texture(person.GetAvatar().Result)) { Location = new(15,17), Size = new(58,58)}); + Controls.Add(Username = new Label() { Text = person.Username, Location = new(77,20)}); + Controls.Add(Status = new Label() { Text = person.Status.ToString(), Location = new(77,48)}); + //r.Clicked += AllOnClicked; + //Username.Clicked += AllOnClicked; + //Status.Clicked += AllOnClicked; + this.Clicked += AllOnClicked; + } + + private Task AllOnClicked(IRenderObject arg) + { + if (ClickCon is not null) _ = ClickCon.Invoke(this); + return Task.CompletedTask; + } + + public event Func? ClickCon; +} \ No newline at end of file