forked from Mirror/Ryujinx
Ava UI: Various Fixes (#4268)
* Fix saves disappearing * Better size formatter * Move TextBox alignment fix to Styles * Fix bug * Left align * Add border * Update Ryujinx.Ava/UI/Models/SaveModel.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * Update Ryujinx.Ava/UI/Models/SaveModel.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * Update Ryujinx.Ava/UI/Models/SaveModel.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * Whitespace Co-authored-by: Ac_K <Acoustik666@gmail.com>
This commit is contained in:
parent
fe29a2ff6e
commit
9f57747c57
6 changed files with 42 additions and 18 deletions
|
@ -234,6 +234,9 @@
|
||||||
<Setter Property="BorderBrush" Value="{DynamicResource MenuFlyoutPresenterBorderBrush}" />
|
<Setter Property="BorderBrush" Value="{DynamicResource MenuFlyoutPresenterBorderBrush}" />
|
||||||
<Setter Property="BorderThickness" Value="{DynamicResource MenuFlyoutPresenterBorderThemeThickness}" />
|
<Setter Property="BorderThickness" Value="{DynamicResource MenuFlyoutPresenterBorderThemeThickness}" />
|
||||||
</Style>
|
</Style>
|
||||||
|
<Style Selector="TextBox">
|
||||||
|
<Setter Property="VerticalContentAlignment" Value="Center" />
|
||||||
|
</Style>
|
||||||
<Style Selector="TextBox.NumberBoxTextBoxStyle">
|
<Style Selector="TextBox.NumberBoxTextBoxStyle">
|
||||||
<Setter Property="Foreground" Value="{DynamicResource ThemeForegroundColor}" />
|
<Setter Property="Foreground" Value="{DynamicResource ThemeForegroundColor}" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
|
@ -1,13 +1,9 @@
|
||||||
using LibHac;
|
|
||||||
using LibHac.Fs;
|
using LibHac.Fs;
|
||||||
using LibHac.Fs.Shim;
|
|
||||||
using LibHac.Ncm;
|
using LibHac.Ncm;
|
||||||
using Ryujinx.Ava.Common;
|
|
||||||
using Ryujinx.Ava.Common.Locale;
|
|
||||||
using Ryujinx.Ava.UI.Helpers;
|
|
||||||
using Ryujinx.Ava.UI.ViewModels;
|
using Ryujinx.Ava.UI.ViewModels;
|
||||||
using Ryujinx.Ava.UI.Windows;
|
using Ryujinx.Ava.UI.Windows;
|
||||||
using Ryujinx.HLE.FileSystem;
|
using Ryujinx.HLE.FileSystem;
|
||||||
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
@ -16,7 +12,6 @@ namespace Ryujinx.Ava.UI.Models
|
||||||
{
|
{
|
||||||
public class SaveModel : BaseModel
|
public class SaveModel : BaseModel
|
||||||
{
|
{
|
||||||
private readonly HorizonClient _horizonClient;
|
|
||||||
private long _size;
|
private long _size;
|
||||||
|
|
||||||
public ulong SaveId { get; }
|
public ulong SaveId { get; }
|
||||||
|
@ -41,11 +36,29 @@ namespace Ryujinx.Ava.UI.Models
|
||||||
|
|
||||||
public bool SizeAvailable { get; set; }
|
public bool SizeAvailable { get; set; }
|
||||||
|
|
||||||
public string SizeString => $"{((float)_size * 0.000000954):0.###}MB";
|
public string SizeString => GetSizeString();
|
||||||
|
|
||||||
public SaveModel(SaveDataInfo info, HorizonClient horizonClient, VirtualFileSystem virtualFileSystem)
|
private string GetSizeString()
|
||||||
|
{
|
||||||
|
const int scale = 1024;
|
||||||
|
string[] orders = { "GiB", "MiB", "KiB" };
|
||||||
|
long max = (long)Math.Pow(scale, orders.Length);
|
||||||
|
|
||||||
|
foreach (string order in orders)
|
||||||
|
{
|
||||||
|
if (Size > max)
|
||||||
|
{
|
||||||
|
return $"{decimal.Divide(Size, max):##.##} {order}";
|
||||||
|
}
|
||||||
|
|
||||||
|
max /= scale;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "0 KiB";
|
||||||
|
}
|
||||||
|
|
||||||
|
public SaveModel(SaveDataInfo info, VirtualFileSystem virtualFileSystem)
|
||||||
{
|
{
|
||||||
_horizonClient = horizonClient;
|
|
||||||
SaveId = info.SaveDataId;
|
SaveId = info.SaveDataId;
|
||||||
TitleId = info.ProgramId;
|
TitleId = info.ProgramId;
|
||||||
UserId = info.UserId;
|
UserId = info.UserId;
|
||||||
|
|
|
@ -13,8 +13,8 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
private int _sortIndex;
|
private int _sortIndex;
|
||||||
private int _orderIndex;
|
private int _orderIndex;
|
||||||
private string _search;
|
private string _search;
|
||||||
private ObservableCollection<SaveModel> _saves;
|
private ObservableCollection<SaveModel> _saves = new();
|
||||||
private ObservableCollection<SaveModel> _views;
|
private ObservableCollection<SaveModel> _views = new();
|
||||||
private AccountManager _accountManager;
|
private AccountManager _accountManager;
|
||||||
|
|
||||||
public string SaveManagerHeading =>
|
public string SaveManagerHeading =>
|
||||||
|
@ -77,8 +77,6 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
public UserSaveManagerViewModel(AccountManager accountManager)
|
public UserSaveManagerViewModel(AccountManager accountManager)
|
||||||
{
|
{
|
||||||
_accountManager = accountManager;
|
_accountManager = accountManager;
|
||||||
_saves = new ObservableCollection<SaveModel>();
|
|
||||||
_views = new ObservableCollection<SaveModel>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Sort()
|
public void Sort()
|
||||||
|
|
|
@ -74,7 +74,6 @@
|
||||||
Margin="5,0,5,0"
|
Margin="5,0,5,0"
|
||||||
HorizontalAlignment="Right"
|
HorizontalAlignment="Right"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
VerticalContentAlignment="Center"
|
|
||||||
DockPanel.Dock="Right"
|
DockPanel.Dock="Right"
|
||||||
KeyUp="SearchBox_OnKeyUp"
|
KeyUp="SearchBox_OnKeyUp"
|
||||||
Text="{Binding SearchText}"
|
Text="{Binding SearchText}"
|
||||||
|
|
|
@ -55,6 +55,11 @@
|
||||||
HorizontalContentAlignment="Left"
|
HorizontalContentAlignment="Left"
|
||||||
Content="{locale:Locale Size}" />
|
Content="{locale:Locale Size}" />
|
||||||
</ComboBoxItem>
|
</ComboBoxItem>
|
||||||
|
<ComboBox.Styles>
|
||||||
|
<Style Selector="ContentControl#ContentPresenter">
|
||||||
|
<Setter Property="HorizontalAlignment" Value="Left" />
|
||||||
|
</Style>
|
||||||
|
</ComboBox.Styles>
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
<ComboBox SelectedIndex="{Binding OrderIndex}" Width="150">
|
<ComboBox SelectedIndex="{Binding OrderIndex}" Width="150">
|
||||||
<ComboBoxItem>
|
<ComboBoxItem>
|
||||||
|
@ -69,6 +74,11 @@
|
||||||
HorizontalContentAlignment="Left"
|
HorizontalContentAlignment="Left"
|
||||||
Content="{locale:Locale OrderDescending}" />
|
Content="{locale:Locale OrderDescending}" />
|
||||||
</ComboBoxItem>
|
</ComboBoxItem>
|
||||||
|
<ComboBox.Styles>
|
||||||
|
<Style Selector="ContentControl#ContentPresenter">
|
||||||
|
<Setter Property="HorizontalAlignment" Value="Left" />
|
||||||
|
</Style>
|
||||||
|
</ComboBox.Styles>
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Grid
|
<Grid
|
||||||
|
@ -122,6 +132,8 @@
|
||||||
Height="42"
|
Height="42"
|
||||||
Width="42"
|
Width="42"
|
||||||
Padding="10"
|
Padding="10"
|
||||||
|
BorderBrush="{DynamicResource AppListHoverBackgroundColor}"
|
||||||
|
BorderThickness="1"
|
||||||
IsVisible="{Binding !InGameList}">
|
IsVisible="{Binding !InGameList}">
|
||||||
<ui:SymbolIcon
|
<ui:SymbolIcon
|
||||||
Symbol="Help"
|
Symbol="Help"
|
||||||
|
|
|
@ -94,7 +94,7 @@ namespace Ryujinx.Ava.UI.Views.User
|
||||||
var save = saveDataInfo[i];
|
var save = saveDataInfo[i];
|
||||||
if (save.ProgramId.Value != 0)
|
if (save.ProgramId.Value != 0)
|
||||||
{
|
{
|
||||||
var saveModel = new SaveModel(save, _horizonClient, _virtualFileSystem);
|
var saveModel = new SaveModel(save, _virtualFileSystem);
|
||||||
saves.Add(saveModel);
|
saves.Add(saveModel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -137,10 +137,9 @@ namespace Ryujinx.Ava.UI.Views.User
|
||||||
if (result == UserResult.Yes)
|
if (result == UserResult.Yes)
|
||||||
{
|
{
|
||||||
_horizonClient.Fs.DeleteSaveData(SaveDataSpaceId.User, saveModel.SaveId);
|
_horizonClient.Fs.DeleteSaveData(SaveDataSpaceId.User, saveModel.SaveId);
|
||||||
|
ViewModel.Saves.Remove(saveModel);
|
||||||
|
ViewModel.Sort();
|
||||||
}
|
}
|
||||||
|
|
||||||
ViewModel.Saves.Remove(saveModel);
|
|
||||||
ViewModel.Views.Remove(saveModel);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue