using qtcnet_client.Properties; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Text; using System.Windows.Forms; namespace qtcnet_client.Controls { public partial class ContactControl : UserControl { [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public string UserId { get; set; } = string.Empty; // only for distinction [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] public string Username { get; set; } = "Username"; [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] public string TextStatus { get; set; } = "Status"; [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] public int Status { get; set; } = 0; [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] public Image ProfilePic { get; set; } = Resources.DefaultPfp; public event EventHandler? OnContactDoubleClicked; bool _isHovering = false; public ContactControl() { InitializeComponent(); } private void ContactControl_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; Rectangle bgBounds = ClientRectangle; Color statusColor = Color.Transparent; switch (Status) { case 0: statusColor = Color.LightGray; break; case 1: statusColor = Color.LawnGreen; break; case 2: statusColor = Color.Gold; break; case 3: statusColor = Color.Red; break; } // draw background based on contacts status using LinearGradientBrush lgb = new(bgBounds, statusColor, BackColor, LinearGradientMode.Horizontal); g.FillRectangle(lgb, bgBounds); } private void ContactControl_Load(object sender, EventArgs e) { lblUsername.Text = Username; lblStatus.Text = $"'{TextStatus}'"; pbProfilePic.Image = ProfilePic; if (Status == 0) { lblStatus.Visible = false; lblUsername.Location = new(44, 15); } } private void lblUsername_MouseHover(object sender, EventArgs e) { if (!_isHovering) { lblUsername.ForeColor = Color.White; _isHovering = true; } } private void lblUsername_MouseLeave(object sender, EventArgs e) { if (_isHovering) { lblUsername.ForeColor = Color.Black; _isHovering = false; } } private void lblUsername_DoubleClick(object sender, EventArgs e) => OnContactDoubleClicked?.Invoke(this, EventArgs.Empty); } }