mirror of
https://git.naxdy.org/Mirror/Ryujinx.git
synced 2025-02-06 17:49:43 +00:00
Remove button
This commit is contained in:
parent
39d8fde391
commit
93a2c2c37e
5 changed files with 33 additions and 43 deletions
|
@ -583,7 +583,7 @@
|
||||||
"SelectUpdateDialogTitle": "Select update files",
|
"SelectUpdateDialogTitle": "Select update files",
|
||||||
"UserProfileWindowTitle": "User Profiles Manager",
|
"UserProfileWindowTitle": "User Profiles Manager",
|
||||||
"CheatWindowTitle": "Cheats Manager",
|
"CheatWindowTitle": "Cheats Manager",
|
||||||
"DlcWindowTitle": "Downloadable Content Manager",
|
"DlcWindowTitle": "Manage Downloadable Content for {0} ({1})",
|
||||||
"UpdateWindowTitle": "Title Update Manager",
|
"UpdateWindowTitle": "Title Update Manager",
|
||||||
"CheatWindowHeading": "Cheats Available for {0} [{1}]",
|
"CheatWindowHeading": "Cheats Available for {0} [{1}]",
|
||||||
"DlcWindowHeading": "{0} Downloadable Content(s) available for {1} ({2})",
|
"DlcWindowHeading": "{0} Downloadable Content(s) available for {1} ({2})",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using Ryujinx.Ava.UI.ViewModels;
|
using Ryujinx.Ava.UI.ViewModels;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace Ryujinx.Ava.UI.Models
|
namespace Ryujinx.Ava.UI.Models
|
||||||
{
|
{
|
||||||
|
@ -21,6 +22,8 @@ namespace Ryujinx.Ava.UI.Models
|
||||||
public string ContainerPath { get; }
|
public string ContainerPath { get; }
|
||||||
public string FullPath { get; }
|
public string FullPath { get; }
|
||||||
|
|
||||||
|
public string FileName => Path.GetFileName(ContainerPath);
|
||||||
|
|
||||||
public DownloadableContentModel(string titleId, string containerPath, string fullPath, bool enabled)
|
public DownloadableContentModel(string titleId, string containerPath, string fullPath, bool enabled)
|
||||||
{
|
{
|
||||||
TitleId = titleId;
|
TitleId = titleId;
|
||||||
|
|
|
@ -32,6 +32,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
|
||||||
private VirtualFileSystem _virtualFileSystem;
|
private VirtualFileSystem _virtualFileSystem;
|
||||||
private AvaloniaList<DownloadableContentModel> _downloadableContents = new();
|
private AvaloniaList<DownloadableContentModel> _downloadableContents = new();
|
||||||
|
private AvaloniaList<DownloadableContentModel> _selectedDownloadableContents = new();
|
||||||
|
|
||||||
private ulong _titleId;
|
private ulong _titleId;
|
||||||
private string _titleName;
|
private string _titleName;
|
||||||
|
@ -46,7 +47,15 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public object SelectedDLCs { get; }
|
public AvaloniaList<DownloadableContentModel> SelectedDownloadableContents
|
||||||
|
{
|
||||||
|
get => _selectedDownloadableContents;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_selectedDownloadableContents = value;
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public DownloadableContentManagerViewModel(VirtualFileSystem virtualFileSystem, ulong titleId, string titleName)
|
public DownloadableContentManagerViewModel(VirtualFileSystem virtualFileSystem, ulong titleId, string titleName)
|
||||||
{
|
{
|
||||||
|
@ -90,7 +99,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
Nca nca = TryOpenNca(ncaFile.Get.AsStorage(), downloadableContentContainer.ContainerPath);
|
Nca nca = TryOpenNca(ncaFile.Get.AsStorage(), downloadableContentContainer.ContainerPath);
|
||||||
if (nca != null)
|
if (nca != null)
|
||||||
{
|
{
|
||||||
_downloadableContents.Add(new DownloadableContentModel(nca.Header.TitleId.ToString("X16"),
|
DownloadableContents.Add(new DownloadableContentModel(nca.Header.TitleId.ToString("X16"),
|
||||||
downloadableContentContainer.ContainerPath,
|
downloadableContentContainer.ContainerPath,
|
||||||
downloadableContentNca.FullPath,
|
downloadableContentNca.FullPath,
|
||||||
downloadableContentNca.Enabled));
|
downloadableContentNca.Enabled));
|
||||||
|
@ -150,7 +159,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
|
||||||
private async Task AddDownloadableContent(string path)
|
private async Task AddDownloadableContent(string path)
|
||||||
{
|
{
|
||||||
if (!File.Exists(path) || _downloadableContents.FirstOrDefault(x => x.ContainerPath == path) != null)
|
if (!File.Exists(path) || DownloadableContents.FirstOrDefault(x => x.ContainerPath == path) != null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -181,7 +190,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
_downloadableContents.Add(new DownloadableContentModel(nca.Header.TitleId.ToString("X16"), path, fileEntry.FullPath, true));
|
DownloadableContents.Add(new DownloadableContentModel(nca.Header.TitleId.ToString("X16"), path, fileEntry.FullPath, true));
|
||||||
|
|
||||||
containsDownloadableContent = true;
|
containsDownloadableContent = true;
|
||||||
}
|
}
|
||||||
|
@ -193,43 +202,19 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RemoveDownloadableContents(bool removeSelectedOnly = false)
|
public void Remove(DownloadableContentModel model)
|
||||||
{
|
{
|
||||||
if (removeSelectedOnly)
|
DownloadableContents.Remove(model);
|
||||||
{
|
|
||||||
AvaloniaList<DownloadableContentModel> removedItems = new();
|
|
||||||
|
|
||||||
/*foreach (var item in DlcDataGrid.SelectedItems)
|
|
||||||
{
|
|
||||||
removedItems.Add(item as DownloadableContentModel);
|
|
||||||
}
|
|
||||||
|
|
||||||
DlcDataGrid.SelectedItems.Clear();*/
|
|
||||||
|
|
||||||
foreach (var item in removedItems)
|
|
||||||
{
|
|
||||||
_downloadableContents.RemoveAll(_downloadableContents.Where(x => x.TitleId == item.TitleId).ToList());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_downloadableContents.Clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RemoveSelected()
|
|
||||||
{
|
|
||||||
RemoveDownloadableContents(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveAll()
|
public void RemoveAll()
|
||||||
{
|
{
|
||||||
RemoveDownloadableContents();
|
DownloadableContents.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void EnableAll()
|
public void EnableAll()
|
||||||
{
|
{
|
||||||
foreach(var item in _downloadableContents)
|
foreach(var item in DownloadableContents)
|
||||||
{
|
{
|
||||||
item.Enabled = true;
|
item.Enabled = true;
|
||||||
}
|
}
|
||||||
|
@ -237,7 +222,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
|
||||||
public void DisableAll()
|
public void DisableAll()
|
||||||
{
|
{
|
||||||
foreach (var item in _downloadableContents)
|
foreach (var item in DownloadableContents)
|
||||||
{
|
{
|
||||||
item.Enabled = false;
|
item.Enabled = false;
|
||||||
}
|
}
|
||||||
|
@ -249,7 +234,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
|
||||||
DownloadableContentContainer container = default;
|
DownloadableContentContainer container = default;
|
||||||
|
|
||||||
foreach (DownloadableContentModel downloadableContent in _downloadableContents)
|
foreach (DownloadableContentModel downloadableContent in DownloadableContents)
|
||||||
{
|
{
|
||||||
if (container.ContainerPath != downloadableContent.ContainerPath)
|
if (container.ContainerPath != downloadableContent.ContainerPath)
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
VirtualizationMode="None"
|
VirtualizationMode="None"
|
||||||
SelectionMode="Multiple"
|
SelectionMode="Multiple"
|
||||||
Background="Transparent"
|
Background="Transparent"
|
||||||
SelectedItems="{Binding SelectedDLCs, Mode=TwoWay}"
|
SelectedItems="{Binding SelectedDownloadableContents, Mode=TwoWay}"
|
||||||
Items="{Binding DownloadableContents}">
|
Items="{Binding DownloadableContents}">
|
||||||
<ListBox.DataTemplates>
|
<ListBox.DataTemplates>
|
||||||
<DataTemplate
|
<DataTemplate
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
TextWrapping="Wrap"
|
TextWrapping="Wrap"
|
||||||
Text="{Binding ContainerPath}" />
|
Text="{Binding FileName}" />
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Spacing="10"
|
Spacing="10"
|
||||||
|
|
|
@ -9,7 +9,7 @@ using Ryujinx.Ava.UI.ViewModels;
|
||||||
using Ryujinx.HLE.FileSystem;
|
using Ryujinx.HLE.FileSystem;
|
||||||
using Ryujinx.Ui.Common.Helper;
|
using Ryujinx.Ui.Common.Helper;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Button = FluentAvalonia.UI.Controls.Button;
|
using Button = Avalonia.Controls.Button;
|
||||||
|
|
||||||
namespace Ryujinx.Ava.UI.Windows
|
namespace Ryujinx.Ava.UI.Windows
|
||||||
{
|
{
|
||||||
|
@ -29,10 +29,6 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
DataContext = ViewModel = new DownloadableContentManagerViewModel(virtualFileSystem, titleId, titleName);
|
DataContext = ViewModel = new DownloadableContentManagerViewModel(virtualFileSystem, titleId, titleName);
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
// RemoveButton.IsEnabled = false;
|
|
||||||
|
|
||||||
// DlcDataGrid.SelectionChanged += DlcDataGrid_SelectionChanged;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task Show(VirtualFileSystem virtualFileSystem, ulong titleId, string titleName)
|
public static async Task Show(VirtualFileSystem virtualFileSystem, ulong titleId, string titleName)
|
||||||
|
@ -67,7 +63,13 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
|
|
||||||
private void RemoveDLC(object sender, RoutedEventArgs e)
|
private void RemoveDLC(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
ViewModel.RemoveSelected();
|
if (sender is Button button)
|
||||||
|
{
|
||||||
|
if (button.DataContext is DownloadableContentModel model)
|
||||||
|
{
|
||||||
|
ViewModel.Remove(model);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OpenLocation(object sender, RoutedEventArgs e)
|
private void OpenLocation(object sender, RoutedEventArgs e)
|
||||||
|
|
Loading…
Reference in a new issue