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 Config _config;
private ServerConfig _serverConfig;
private ServerConfig? _serverConfig;
private AudioService AudioService = new();
private ImageFactory _imgFactory = new();
private CredentialService _credService = new();
@ -377,17 +377,60 @@ namespace qtc_net_client_2
{
if (lvStoreItems.Items.Count == storeItems.Data.Count) return;
ilStoreThumbnails.Images.Clear();
foreach (var item in storeItems.Data)
if (!IsHandleCreated || IsDisposed)
return;
if (InvokeRequired)
{
await GetAndAddStoreThumbnail(item);
var lvitem = lvStoreItems.Items.Add(new ListViewItem { Text = item.Name, Name = item.Id.ToString() });
lvitem.ImageKey = item.Id.ToString();
Invoke(() => ApplyStoreItems(storeItems.Data));
}
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)
{
if (lvStoreItems.SelectedItems.Count > 0)