It’s a little funky but it works

This commit is contained in:
Isaac Marovitz 2023-01-15 17:06:35 -05:00
parent 086c7263ab
commit 96cf9b0ef6
No known key found for this signature in database
GPG key ID: 97250B2B09A132E1
3 changed files with 44 additions and 3 deletions

View file

@ -2,6 +2,7 @@ using Avalonia.Collections;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Threading;
using DynamicData;
using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
@ -99,10 +100,17 @@ namespace Ryujinx.Ava.UI.ViewModels
Nca nca = TryOpenNca(ncaFile.Get.AsStorage(), downloadableContentContainer.ContainerPath);
if (nca != null)
{
DownloadableContents.Add(new DownloadableContentModel(nca.Header.TitleId.ToString("X16"),
var content = new DownloadableContentModel(nca.Header.TitleId.ToString("X16"),
downloadableContentContainer.ContainerPath,
downloadableContentNca.FullPath,
downloadableContentNca.Enabled));
downloadableContentNca.Enabled);
DownloadableContents.Add(content);
if (content.Enabled)
{
SelectedDownloadableContents.Add(content);
}
}
}
}
@ -190,7 +198,10 @@ namespace Ryujinx.Ava.UI.ViewModels
break;
}
DownloadableContents.Add(new DownloadableContentModel(nca.Header.TitleId.ToString("X16"), path, fileEntry.FullPath, true));
var content = new DownloadableContentModel(nca.Header.TitleId.ToString("X16"), path,
fileEntry.FullPath, true);
DownloadableContents.Add(content);
SelectedDownloadableContents.Add(content);
containsDownloadableContent = true;
}

View file

@ -32,6 +32,7 @@
VirtualizationMode="None"
SelectionMode="Multiple"
Background="Transparent"
SelectionChanged="OnSelectionChanged"
SelectedItems="{Binding SelectedDownloadableContents, Mode=TwoWay}"
Items="{Binding DownloadableContents}">
<ListBox.DataTemplates>

View file

@ -82,5 +82,34 @@ namespace Ryujinx.Ava.UI.Windows
}
}
}
private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
foreach (var content in e.AddedItems)
{
if (content is DownloadableContentModel model)
{
var index = ViewModel.DownloadableContents.IndexOf(model);
if (index != -1)
{
ViewModel.DownloadableContents[index].Enabled = true;
}
}
}
foreach (var content in e.RemovedItems)
{
if (content is DownloadableContentModel model)
{
var index = ViewModel.DownloadableContents.IndexOf(model);
if (index != -1)
{
ViewModel.DownloadableContents[index].Enabled = false;
}
}
}
}
}
}