Fix Profile Pic Icon Size In Contacts List

Ensure Profile Form Is Disposed On Close (Moonbase/qtc-net-server#1)
This commit is contained in:
Alan Moon 2025-06-22 15:38:41 -07:00
parent d4fba309a4
commit 240bf9e9d7
5 changed files with 68 additions and 52 deletions

View File

@ -93,18 +93,19 @@
//
lvContacts.LargeImageList = ilProfilePics;
lvContacts.Location = new Point(0, 0);
lvContacts.MultiSelect = false;
lvContacts.Name = "lvContacts";
lvContacts.Size = new Size(250, 507);
lvContacts.SmallImageList = ilProfilePics;
lvContacts.TabIndex = 1;
lvContacts.UseCompatibleStateImageBehavior = false;
lvContacts.View = View.List;
lvContacts.View = View.SmallIcon;
lvContacts.DoubleClick += lvContacts_DoubleClick;
//
// ilProfilePics
//
ilProfilePics.ColorDepth = ColorDepth.Depth32Bit;
ilProfilePics.ImageSize = new Size(16, 16);
ilProfilePics.ImageSize = new Size(32, 32);
ilProfilePics.TransparentColor = Color.Transparent;
//
// tbpRooms

View File

@ -141,11 +141,13 @@ namespace qtc_net_client_2
if (selectedUser != null)
{
// get user info and open profile dialog
var res = await _apiService.GetUserInformationAsync(OnlineUsers.FirstOrDefault(e => e.Username == selectedUser)!.Id);
var user = OnlineUsers.FirstOrDefault(e => e.Username == selectedUser);
var res = await _apiService.GetUserInformationAsync(user!.Id);
var pfpRes = await _apiService.GetUserProfilePic(user!.Id);
if (res.Data != null && res.Success)
{
Profile frmProfile = new Profile(res.Data, _apiService, _gatewayService);
Profile frmProfile = new Profile(res.Data, pfpRes, _apiService, _gatewayService);
frmProfile.ShowDialog();
}
}
@ -174,11 +176,13 @@ namespace qtc_net_client_2
if (selectedUser.Contains('[')) selectedUser = selectedUser.Split('[', options: StringSplitOptions.TrimEntries)[0];
// get user info and open profile dialog
var res = await _apiService.GetUserInformationAsync(Contacts.FirstOrDefault(e => e.Username == selectedUser)!.Id);
var user = Contacts.FirstOrDefault(e => e.Username == selectedUser);
var res = await _apiService.GetUserInformationAsync(user!.Id);
var pfpRes = await _apiService.GetUserProfilePic(user!.Id);
if (res.Data != null && res.Success)
{
Profile frmProfile = new Profile(res.Data, _apiService, _gatewayService);
Profile frmProfile = new Profile(res.Data, pfpRes, _apiService, _gatewayService);
frmProfile.ShowDialog();
}
}

View File

@ -127,45 +127,45 @@
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA8AgAAAJNU0Z0AUkBTAIBAQIB
AAGIAQABiAEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAARADAAEBAQABIAYAARAS
AANtAe8BawFnAVYB7wFnAV0BVgHvAWcBWwFWAe8BZwFbAVYB7wFnAVkBVgHvAWcBZAFZAe8DZwHvA2cB
7wNnAe8DZwHvA2cB7wNnAe8DZwHvA2cB7wNnAe84AAMzAVEDhQH1gAAD+AH/AbkBlQE8Af8BgwF9AW4B
/wGEAX0BbAH/AaoBhAEnAf8BrAF7AQAB/wHMAbwBlAH/A34B/wN+Af8DfgH/A34B/wN+Af8DfgH/A34B
/wN+Af8DjgH/OAADEgEYAz8BbYAABP8BlwGLAW0B/wKBAYAB/wGCAYEBgAH/AZgBiAFgAf8BygGQAQAB
/wHdAcwBnwH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DkwH/NAADXwHTAz0BZ4QABP8B
hgGEAX0B/wOBAf8DgQH/AYcBgwF6Af8BzwGUAQAB/wHeAcwBnwH/A+AB/wPgAf8D4AH/A+AB/wPgAf8D
4AH/A+AB/wPgAf8DvAH/NAADWgHCAzQBU4QABP8BiwGGAXoB/wOBAf8DgQH/AY4BhgFxAf8BzwGUAQAB
/wHeAcwBnyH/A8oB/xAAAw0BEQM/AWwDUwGnAVwCWQG+AVgCVgGzAUgCRwGDAyEBMAQAA4EB8wM6AWCI
AAT/AawBlgFgAf8BgwGCAX8B/wGFAYIBfQH/AbMBkwFEAf8BzwGUAQAB/wHeAcwBnwH/A7AB/wOwAf8D
sAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DqAH/CAADGgEkA1IBoAFxAWMBPwH2AaIBcwEAAf8BrgF8AQAB
/wGwAX0BAAH/AagBeAEAAf8BlQFqAQAB/wGAAWUBEQH+AVwCWQHGA1cBtQMWAR6IAAT/AdkBqgE3Af8B
vgGYATgB/wHAAZgBNgH/AdwBogEUAf8BzwGUAQAB/wHeAcwBnwH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D
gQH/A4EB/wOBAf8DkwH/BAADIAEtAWYBYwFaAekBvwGIAQAB/wHNAZUBCgH/AbABiAEnAf8BcwFkAT8B
/wFNAUsBRwH/AU4BSwFCAf8BZgFXATEB/wGaAXQBFwH/AaQBdgEDAf8BcAFPAQAB/wNDAXYEAYQABP8B
4QGuATEB/wG9AZcBOwH/AcABmAE1Af8B4wGlAQoB/wHPAZQBAAH/Ad4BzAGfAf8DwAH/A8AB/wPAAf8D
wAH/A8AB/wPAAf8DwAH/A8AB/wOvAf8EAAFoAWMBWgHpAdkBmgEAAf8B2gGjARwB/wKOAYwB/wOKAf8D
lwH/A5sB/wORAf8DdAH/A0gB/wFDAUIBPwH/AbUBgwEHAf8BegFXAQAB/wM2AViEAAT/AbsBnQFTAf8B
iAGEAXkB/wGMAYUBdAH/AcQBmQEwAf8BzwGUAQAB/wHeAcwBnyH/A8oB/wNDAXYB6QGnAQIB/wHpAasB
EgH/AdABygG7Af8DrAH/A10B/wNMAf8DSwH/A0QB/wMPAf8DswH/A2YB/wFUAUwBOgH/Aa4BfQEEAf8D
XQHMhAAE/wGUAYoBcwH/A4EB/wOBAf8BmgGKAWMB/wHPAZQBAAH/Ad4BzAGfAf8D0AH/A9AB/wPQAf8D
0AH/A9AB/wPQAf8D0AH/A9AB/wO1Af8CagFhAeYB7QGtARAB/wH0AdABdgH/A/oB/wP6Af8DfQH/A38B
/wOAAf8DgAH/A34B/wOEAf8DuwH/A2oB/wGoAYABHAH/AXIBYwE/AfaEAAT/AYYBgwF+Af8DgQH/A4EB
/wGGAYMBewH/Ac8BlAEAAf8B3gHMAZ8B/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A5MB
/wFvAWwBYAHuAe8BtAEhAf8B9wHcAZcJ/wORAf8DiAH/A4cB/wOHAf8DgQH/A1cB/wPmAf8DowH/AbYB
kQE2Af8BigFqATIB+YQABP8BiwGGAXkB/wOBAf8DgQH/AY4BhgFxAf8BzwGUAQAB/wHeAcwBnwH/A6EB
/wOhAf8DoQH/A6EB/wOhAf8DoQH/A6EB/wOhAf8DoQH/A0sBjQHwAb4BPwH/AfQBzQFsIf8D+wH/A9AB
/wHXAacBMQH/AmEBXQHRhAAE/wGnAZQBZwH/AYMBggF/Af8BhQGDAX4B/wGwAZQBTgH/AdMBlwECAf8B
4AHOAZ8B/wPnAf8D5wH/A+cB/wPnAf8D5wH/A+cB/wPnAf8D5wH/A8AB/wMHAQkBbwFtAWIB7gHxAbwB
OwH/AfoB6gHCAf8D3AH/A3cB/wNoAf8DaAH/A2gB/wMyCf8B8gHdAakB/wHqAakBCAH/Az4BaoQABP8B
1wGxAVIB/wGaAY8BdAH/AaABkgFtAf8B4AGvATcB/wHnAakBEAH/AesB1QGgAf8DgQH/A4EB/wOBAf8D
gQH/A4EB/wOBAf8DgQH/A4EB/wOTAf8EAAMzAVEBcwFtAWgB8AHzAcYBWAH/AfoB5wG4Fv8B/gH7Af8B
+QHiAaoB/wHvAbgBLQH/A04BlgQChAAE/wH0Ac0BbAH/AfQBywFmAf8B9AHLAWUB/wH0AcsBZQH/AfEB
wQFJAf8B+QHjAawB/wOJAf8DiQH/A4kB/wOJAf8DiQH/A4kB/wOJAf8DiQH/A5oB/wgAAyIBMQNfAckB
qgGZAWcB+gHzAcoBZQH/AfkB4QGmAf8B+wHtAcwB/wH7AewByAH/AfgB3QGbAf8B0AGiAWIB/gJlAV4B
4gM9AWgEAYgAQP8QAAMPARMDRwGCA2QB2wG+AawBbwH8AWgCZwHqA1QBqAMoATuUAAFCAU0BPgcAAT4D
AAEoAwABQAMAARADAAEBAQABAQUAAYAXAAP/AwAB/wH8BgAB/wH8BgAB/wH5BgAB/wH5BgAB8AETBgAB
wAEDBgABgAEBBgABgAEBBwABAQcAAQEHAAEBBwABAQcAAQEGAAGAAQEGAAHAAQMGAAHwAR8EAAs=
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA5ggAAAJNU0Z0AUkBTAIBAQIB
AAGoAQABqAEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAARADAAEBAQABIAYAARAS
AANnAe8CZwFZAe8BZwFdAVkB7wFnAVsBWQHvAWcBWwFZAe8BZwJZAe8BZwFkAVkB7wNnAe8DZwHvA2cB
7wNnAe8DZwHvA2cB7wNnAe8DZwHvA2cB7zgAAzMBUQN8AfWAAAP4Af8BuQGVATwB/wGDAX0BbgH/AYQB
fQFsAf8BqgGEAScB/wGsAXsBAAH/AcwBvAGUAf8DfgH/A34B/wN+Af8DfgH/A34B/wN+Af8DfgH/A34B
/wOOAf84AAMSARgDPwFtgAAE/wGXAYsBbQH/AoEBgAH/AYIBgQGAAf8BmAGIAWAB/wHKAZABAAH/Ad0B
zAGfAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOTAf80AANfAdMDPQFnhAAE/wGGAYQB
fQH/A4EB/wOBAf8BhwGDAXoB/wHPAZQBAAH/Ad4BzAGfAf8D4AH/A+AB/wPgAf8D4AH/A+AB/wPgAf8D
4AH/A+AB/wO8Af80AANaAcIDNAFThAAE/wGLAYYBegH/A4EB/wOBAf8BjgGGAXEB/wHPAZQBAAH/Ad4B
zAGfIf8DygH/EAADDQERAz8BbANTAacBXAJZAb4BWAJWAbMBSAJHAYMDIQEwBAADdgHzAzoBYIgABP8B
rAGWAWAB/wGDAYIBfwH/AYUBggF9Af8BswGTAUQB/wHPAZQBAAH/Ad4BzAGfAf8DsAH/A7AB/wOwAf8D
sAH/A7AB/wOwAf8DsAH/A7AB/wOoAf8IAAMaASQDUgGgAWkBYwFIAfYBogFzAQAB/wGuAXwBAAH/AbAB
fQEAAf8BqAF4AQAB/wGVAWoBAAH/AYABaQEVAf4BXAJZAcYDVwG1AxYBHogABP8B2QGqATcB/wG+AZgB
OAH/AcABmAE2Af8B3AGiARQB/wHPAZQBAAH/Ad4BzAGfAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D
gQH/A4EB/wOTAf8EAAMgAS0CYwFaAekBvwGIAQAB/wHNAZUBCgH/AbABiAEnAf8BcwFkAT8B/wFNAUsB
RwH/AU4BSwFCAf8BZgFXATEB/wGaAXQBFwH/AaQBdgEDAf8BcAFPAQAB/wNDAXYEAYQABP8B4QGuATEB
/wG9AZcBOwH/AcABmAE1Af8B4wGlAQoB/wHPAZQBAAH/Ad4BzAGfAf8DwAH/A8AB/wPAAf8DwAH/A8AB
/wPAAf8DwAH/A8AB/wOvAf8EAAJjAVoB6QHZAZoBAAH/AdoBowEcAf8CjgGMAf8DigH/A5cB/wObAf8D
kQH/A3QB/wNIAf8BQwFCAT8B/wG1AYMBBwH/AXoBVwEAAf8DNgFYhAAE/wG7AZ0BUwH/AYgBhAF5Af8B
jAGFAXQB/wHEAZkBMAH/Ac8BlAEAAf8B3gHMAZ8h/wPKAf8DQwF2AekBpwECAf8B6QGrARIB/wHQAcoB
uwH/A6wB/wNdAf8DTAH/A0sB/wNEAf8DDwH/A7MB/wNmAf8BVAFMAToB/wGuAX0BBAH/A10BzIQABP8B
lAGKAXMB/wOBAf8DgQH/AZoBigFjAf8BzwGUAQAB/wHeAcwBnwH/A9AB/wPQAf8D0AH/A9AB/wPQAf8D
0AH/A9AB/wPQAf8DtQH/AmoBYQHmAe0BrQEQAf8B9AHQAXYB/wP6Af8D+gH/A30B/wN/Af8DgAH/A4AB
/wN+Af8DhAH/A7sB/wNqAf8BqAGAARwB/wFrAWMBSAH2hAAE/wGGAYMBfgH/A4EB/wOBAf8BhgGDAXsB
/wHPAZQBAAH/Ad4BzAGfAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOTAf8BawFoAWIB
7gHvAbQBIQH/AfcB3AGXCf8DkQH/A4gB/wOHAf8DhwH/A4EB/wNXAf8D5gH/A6MB/wG2AZEBNgH/AYYB
agE+AfmEAAT/AYsBhgF5Af8DgQH/A4EB/wGOAYYBcQH/Ac8BlAEAAf8B3gHMAZ8B/wOhAf8DoQH/A6EB
/wOhAf8DoQH/A6EB/wOhAf8DoQH/A6EB/wNLAY0B8AG+AT8B/wH0Ac0BbCH/A/sB/wPQAf8B1wGnATEB
/wJhAV0B0YQABP8BpwGUAWcB/wGDAYIBfwH/AYUBgwF+Af8BsAGUAU4B/wHTAZcBAgH/AeABzgGfAf8D
5wH/A+cB/wPnAf8D5wH/A+cB/wPnAf8D5wH/A+cB/wPAAf8DBwEJAWsBaQFiAe4B8QG8ATsB/wH6AeoB
wgH/A9wB/wN3Af8DaAH/A2gB/wNoAf8DMgn/AfIB3QGpAf8B6gGpAQgB/wM+AWqEAAT/AdcBsQFSAf8B
mgGPAXQB/wGgAZIBbQH/AeABrwE3Af8B5wGpARAB/wHrAdUBoAH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D
gQH/A4EB/wOBAf8DkwH/BAADMwFRAWsBaQFoAfAB8wHGAVgB/wH6AecBuBb/Af4B+wH/AfkB4gGqAf8B
7wG4AS0B/wNOAZYEAoQABP8B9AHNAWwB/wH0AcsBZgH/AfQBywFlAf8B9AHLAWUB/wHxAcEBSQH/AfkB
4wGsAf8DiQH/A4kB/wOJAf8DiQH/A4kB/wOJAf8DiQH/A4kB/wOaAf8IAAMiATEDXwHJAaIBjQFnAfoB
8wHKAWUB/wH5AeEBpgH/AfsB7QHMAf8B+wHsAcgB/wH4Ad0BmwH/AcgBmgFmAf4CZQFeAeIDPQFoBAGI
AED/EAADDwETA0cBggNkAdsBtgGhAW8B/ANnAeoDVAGoAygBO5QAAUIBTQE+BwABPgMAASgDAAFAAwAB
EAMAAQEBAAEBBQABgBcAA/8DAAH/AfwGAAH/AfwGAAH/AfkGAAH/AfkGAAHwARMGAAHAAQMGAAGAAQEG
AAGAAQEHAAEBBwABAQcAAQEHAAEBBwABAQYAAYABAQYAAcABAwYAAfABHwQACw==
</value>
</data>
<metadata name="ctxmChangeStatus.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

View File

@ -227,6 +227,7 @@
Name = "Profile";
StartPosition = FormStartPosition.CenterParent;
Text = "QtC.NET Client - User Profile";
FormClosed += Profile_FormClosed;
Load += frmProfile_Load;
((System.ComponentModel.ISupportInitialize)pbUserPfp).EndInit();
((System.ComponentModel.ISupportInitialize)pbUserStatus).EndInit();

View File

@ -21,22 +21,27 @@ namespace qtc_net_client_2.Forms
UserInformationDto _userInformationDto;
IApiService _apiService;
IGatewayService _gatewayService;
public Profile(UserInformationDto userInfo, IApiService apiService, IGatewayService gatewayService)
ServiceResponse<byte[]>? pfpRes;
public Profile(UserInformationDto userInfo, ServiceResponse<byte[]>? pfp, IApiService apiService, IGatewayService gatewayService)
{
_userInformationDto = userInfo;
_apiService = apiService;
_gatewayService = gatewayService;
pfpRes = pfp;
InitializeComponent();
}
private async void frmProfile_Load(object sender, EventArgs e)
{
var contactsList = await _apiService.GetCurrentUserContacts();
lblUsername.Text = _userInformationDto.Username;
lblCurrencyAmount.Text = _userInformationDto.CurrencyAmount.ToString();
rtxtBio.Text = _userInformationDto.Bio;
var pfpRes = await _apiService.GetUserProfilePic(_userInformationDto.Id);
if (pfpRes.Success && pfpRes.Data != null)
if (pfpRes != null && pfpRes.Success && pfpRes.Data != null)
{
using (var ms = new MemoryStream(pfpRes.Data))
{
@ -46,7 +51,7 @@ namespace qtc_net_client_2.Forms
}
var userStatus = (UserStatus)_userInformationDto.Status;
switch(userStatus)
switch (userStatus)
{
case UserStatus.Online:
pbUserStatus.Image = Resources.OnlineIcon;
@ -70,10 +75,9 @@ namespace qtc_net_client_2.Forms
}
else btnAddContact.Visible = true;
var contactsResult = await _apiService.GetCurrentUserContacts();
if (contactsResult.Success && contactsResult.Data != null)
if (contactsList != null && contactsList.Success && contactsList.Data != null)
{
var contact = contactsResult.Data.FirstOrDefault(e => e.UserId == _userInformationDto.Id || e.OwnerId == _userInformationDto.Id);
var contact = contactsList.Data.FirstOrDefault(e => e.UserId == _userInformationDto.Id || e.OwnerId == _userInformationDto.Id);
if (contact != null)
{
if (contact.OwnerId == _apiService.CurrentUser.Id)
@ -135,6 +139,12 @@ namespace qtc_net_client_2.Forms
}
}
private void Profile_FormClosed(object sender, FormClosedEventArgs e)
{
_userInformationDto = null!; // ignoring warning since this is just disposing the form
pfpRes = null;
}
private async void btnAddContact_Click_Add(object sender, EventArgs e)
{
var result = await _apiService.AddContactToCurrentUser(_userInformationDto.Id);