From 6f106dc49ccda46e6df70ccb44120564c13184d9 Mon Sep 17 00:00:00 2001 From: JacobTech Date: Tue, 3 Jan 2023 10:04:47 -0500 Subject: [PATCH] Added a channel picker to resolve #11 --- Luski/GUI/MainScreen.cs | 51 ++++++++++++++++++++++++++++++++++++++++- Luski/Globals.cs | 2 +- Luski/Luski.csproj | 2 +- 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/Luski/GUI/MainScreen.cs b/Luski/GUI/MainScreen.cs index 09db009..396e526 100644 --- a/Luski/GUI/MainScreen.cs +++ b/Luski/GUI/MainScreen.cs @@ -5,8 +5,11 @@ using GraphicsManager.Enums; using GraphicsManager.Interfaces; using GraphicsManager.Objects; using GraphicsManager.Objects.Core; +using Luski.GUI.MainScreen.Interfaces; +using Luski.GUI.MainScreen.UI; using Luski.GUI.StartPage.UI; using Luski.net; +using Luski.net.JsonTypes; using OpenTK.Graphics.OpenGL4; using OpenTK.Mathematics; using OpenTK.Windowing.Desktop; @@ -24,6 +27,7 @@ public class MainScreen : Window StartFocused = true, Size = new OpenTK.Mathematics.Vector2i(481, 838), }; + FlowLayout? channelpicker; public MainScreen() : base(Settings) { @@ -32,6 +36,35 @@ public class MainScreen : Window login.ChangeToApp += LoginOnChangeToApp; } + public void AddGroup(SocketGroupChannel group) + { + Group friend = new(group); + friend.ClickCon += ChannelOnClickCon; + channelpicker!.Controls.Add(friend); + chans.Add(friend); + } + + private readonly List fr = new(); + private List chans = new(); + public void AddFriend(SocketRemoteUser user) + { + //add to friend pannel as well; + if (user.Channel is not null) + { + Friend friend = new(user); + friend.ClickCon += ChannelOnClickCon; + fr.Add(friend); + channelpicker!.Controls.Add(friend); + chans.Add(friend); + } + } + + private Task ChannelOnClickCon(IChannelPick arg) + { + //show their channel + return Task.CompletedTask; + } + private Task LoginOnChangeToApp() { Controls.Clear(); @@ -39,8 +72,24 @@ public class MainScreen : Window Size = new(2048, 1334); WindowBorder = WindowBorder.Resizable; BackgroundColor = new Color4(34, 34, 34, 255); - Controls.Add(new Rectangle(new Texture(Globals.Luski.CurrentUser.GetAvatar().Result)) { Size = new(70, 70), Location = new(14 + 132, 16 + 62 + 1170)}); + Controls.Add(new Rectangle(new Texture(Globals.Luski.CurrentUser.GetAvatar().Result)) { Size = new(70, 70), Location = new(146, 78 + 1170)}); Controls.Add(new Label(){Location = new(132 + 92, 39 + 62+1170), Text = Globals.Luski.CurrentUser.Username}); + + Controls.Add(channelpicker = new FlowLayout() + { + BackgroundColor = new(34,34,34,255), + Size = new(448, 1240), + Location = new(132, 0), + Anchor = ObjectAnchor.Top | ObjectAnchor.Left | ObjectAnchor.Bottom + }); + foreach (SocketGroupChannel ch in Globals.Luski.CurrentUser.Channels.Where(s => s is SocketGroupChannel).Cast()) + { + AddGroup(ch); + } + foreach (SocketRemoteUser item in Globals.Luski.CurrentUser.Friends) + { + if (item.Channel is not null) AddFriend(item); + } DrawFrame(); return Task.CompletedTask; } diff --git a/Luski/Globals.cs b/Luski/Globals.cs index 8d09cba..4fa8c14 100644 --- a/Luski/Globals.cs +++ b/Luski/Globals.cs @@ -4,5 +4,5 @@ namespace Luski; public class Globals { - public static Server Luski = null; + public static Server Luski = null!; } \ No newline at end of file diff --git a/Luski/Luski.csproj b/Luski/Luski.csproj index 61c30bf..f57691d 100644 --- a/Luski/Luski.csproj +++ b/Luski/Luski.csproj @@ -8,7 +8,7 @@ - +