Rework Store Tab Updating
This commit is contained in:
parent
a970fd1b5c
commit
66eb9b91e8
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user