Rework Store Tab Updating

This commit is contained in:
Alan Moon 2025-11-27 13:00:26 -08:00
parent a970fd1b5c
commit 66eb9b91e8

View File

@ -22,7 +22,7 @@ namespace qtc_net_client_2
private IGatewayService _gatewayService; private IGatewayService _gatewayService;
private Config _config; private Config _config;
private ServerConfig _serverConfig; private ServerConfig? _serverConfig;
private AudioService AudioService = new(); private AudioService AudioService = new();
private ImageFactory _imgFactory = new(); private ImageFactory _imgFactory = new();
private CredentialService _credService = new(); private CredentialService _credService = new();
@ -377,17 +377,60 @@ namespace qtc_net_client_2
{ {
if (lvStoreItems.Items.Count == storeItems.Data.Count) return; if (lvStoreItems.Items.Count == storeItems.Data.Count) return;
ilStoreThumbnails.Images.Clear(); if (!IsHandleCreated || IsDisposed)
foreach (var item in storeItems.Data) return;
if (InvokeRequired)
{ {
await GetAndAddStoreThumbnail(item); Invoke(() => ApplyStoreItems(storeItems.Data));
var lvitem = lvStoreItems.Items.Add(new ListViewItem { Text = item.Name, Name = item.Id.ToString() }); }
lvitem.ImageKey = item.Id.ToString(); else
{
ApplyStoreItems(storeItems.Data);
} }
} }
} }
} }
private async void ApplyStoreItems(IEnumerable<StoreItem> storeItems)
{
ilStoreThumbnails.Images.Clear();
lvStoreItems.Items.Clear();
var items = await BuildListViewItemsAsync(storeItems);
lvStoreItems.BeginUpdate();
try
{
lvStoreItems.Items.AddRange([.. items]);
}
finally
{
lvStoreItems.EndUpdate();
}
}
private async Task<List<ListViewItem>> BuildListViewItemsAsync(IEnumerable<StoreItem> storeItems)
{
var items = new List<ListViewItem>();
foreach (var item in storeItems)
{
await GetAndAddStoreThumbnail(item);
var lvItem = new ListViewItem
{
Text = item.Name,
Name = item.Id.ToString(),
ImageKey = item.Id.ToString()
};
items.Add(lvItem);
}
return items;
}
private async void lvStoreItems_DoubleClick(object sender, EventArgs e) private async void lvStoreItems_DoubleClick(object sender, EventArgs e)
{ {
if (lvStoreItems.SelectedItems.Count > 0) if (lvStoreItems.SelectedItems.Count > 0)