diff options
| author | Isaac Marovitz <42140194+IsaacMarovitz@users.noreply.github.com> | 2023-01-11 00:20:19 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-11 06:20:19 +0100 |
| commit | 934b5a64e5638ae5228acb52faf48efadefdea8d (patch) | |
| tree | cc65eab75c5a9a7c3438de3302ab1f6cbcec1599 /Ryujinx.Ava/UI/Models | |
| parent | cee667b491f87c48546f348bad8c6f16cdf6d628 (diff) | |
Ava GUI: User Profile Manager + Other Fixes (#4166)
* Fix redundancies
* Add back elses
* Loading Screen fixes
* Redesign User Profile Manager
- Backported long selection bar in Grid/List view not working
- Backported UserSelector is jank
* Fix SelectionIndicator
* Fix DataType
* Fix SaveManager bug
* Remove debug log
* Load saves on UIThread
* Reduce UI thread blocking
* Fix locale keys
* Use block namespaces
* Fix close button width
* Make UserProfile ordering consistent
* Alphabetical order
* Adjust layout, remove green circle for blue selector
* Fix some inconsistencies
* Fix no inital selected profile
* Adjust appearance of edit button
* Adjust SaveManager
* Remove redundant warning dialog
* Make firmware avatar selector clearer
* View redesign again :hero_depressed:
* Consistency adjustments
* Adjust margins
* Make `UserProfileImageSelector` consistent
* Make `UserFirmwareAvatarSelector` consistent
* Fix long grid view selector
* Switch case
* Remove long selection bar
Handled in #4178
* Consistency
* Started dialog titles
* Fixes
* Remaining titles
* Update Ryujinx.Ava/UI/Controls/NavigationDialogHost.axaml
Co-authored-by: Mary-nyan <thog@protonmail.com>
* Fix build
* Hide UserRecoverer if no LostProfiles are found
* UserEditor Avatar Placeholder
* Watermark + locale adjustment
* Border radius
* Remove unnecessary styles
* Fix firmware avatar image order
* Cleanup `ColorPickerButton`
* Make `UserId` copy/paste able
* Make `FirmwareAvatarSelector` 6 images wide
* Make selection bar better
* Unsaved changes dialogue
* Fix indentation
* Remove extra check
* Address suggestions
* Reorganise
- Remove unused views
- Rename views to match convention
- Fix weird namespacing
* Update Ryujinx.Ava/UI/Views/User/UserFirmwareAvatarSelectorView.axaml
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update Ryujinx.Ava/UI/Views/User/UserFirmwareAvatarSelectorView.axaml
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* UserRecovererView empty placeholder
* Update Ryujinx.Ava/UI/Views/User/UserSelectorView.axaml.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update Ryujinx.Ava/UI/Views/User/UserSaveManagerView.axaml.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update Ryujinx.Ava/UI/Views/User/UserSaveManagerView.axaml.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update Ryujinx.Ava/UI/Views/User/UserSaveManagerView.axaml.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update Ryujinx.Ava/UI/Views/User/UserFirmwareAvatarSelectorView.axaml.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update Ryujinx.Ava/UI/ViewModels/UserFirmwareAvatarSelectorViewModel.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update Ryujinx.Ava/UI/ViewModels/UserFirmwareAvatarSelectorViewModel.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update Ryujinx.Ava/UI/ViewModels/UserFirmwareAvatarSelectorViewModel.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update Ryujinx.Ava/UI/Models/UserProfile.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update Ryujinx.Ava/UI/Controls/NavigationDialogHost.axaml.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update Ryujinx.Ava/UI/Controls/NavigationDialogHost.axaml.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Remove AddModel
* Update Ryujinx.Ava/Assets/Locales/en_US.json
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Fix bug
Co-authored-by: Mary-nyan <thog@protonmail.com>
Co-authored-by: Ac_K <Acoustik666@gmail.com>
Diffstat (limited to 'Ryujinx.Ava/UI/Models')
| -rw-r--r-- | Ryujinx.Ava/UI/Models/ProfileImageModel.cs | 20 | ||||
| -rw-r--r-- | Ryujinx.Ava/UI/Models/SaveModel.cs | 24 | ||||
| -rw-r--r-- | Ryujinx.Ava/UI/Models/TempProfile.cs | 9 | ||||
| -rw-r--r-- | Ryujinx.Ava/UI/Models/UserProfile.cs | 42 |
4 files changed, 63 insertions, 32 deletions
diff --git a/Ryujinx.Ava/UI/Models/ProfileImageModel.cs b/Ryujinx.Ava/UI/Models/ProfileImageModel.cs index 63da7b44..8aa19400 100644 --- a/Ryujinx.Ava/UI/Models/ProfileImageModel.cs +++ b/Ryujinx.Ava/UI/Models/ProfileImageModel.cs @@ -1,6 +1,9 @@ +using Avalonia.Media; +using Ryujinx.Ava.UI.ViewModels; + namespace Ryujinx.Ava.UI.Models { - public class ProfileImageModel + public class ProfileImageModel : BaseModel { public ProfileImageModel(string name, byte[] data) { @@ -10,5 +13,20 @@ namespace Ryujinx.Ava.UI.Models public string Name { get; set; } public byte[] Data { get; set; } + + private SolidColorBrush _backgroundColor = new(Colors.White); + + public SolidColorBrush BackgroundColor + { + get + { + return _backgroundColor; + } + set + { + _backgroundColor = value; + OnPropertyChanged(); + } + } } }
\ No newline at end of file diff --git a/Ryujinx.Ava/UI/Models/SaveModel.cs b/Ryujinx.Ava/UI/Models/SaveModel.cs index 3c20741f..7096f9d7 100644 --- a/Ryujinx.Ava/UI/Models/SaveModel.cs +++ b/Ryujinx.Ava/UI/Models/SaveModel.cs @@ -4,13 +4,10 @@ using LibHac.Fs.Shim; using LibHac.Ncm; using Ryujinx.Ava.Common; using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Controls; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Ava.UI.Windows; using Ryujinx.HLE.FileSystem; -using Ryujinx.Ui.App.Common; -using System; using System.IO; using System.Linq; using System.Threading.Tasks; @@ -22,7 +19,6 @@ namespace Ryujinx.Ava.UI.Models private readonly HorizonClient _horizonClient; private long _size; - public Action DeleteAction { get; set; } public ulong SaveId { get; } public ProgramId TitleId { get; } public string TitleIdString => $"{TitleId.Value:X16}"; @@ -99,25 +95,5 @@ namespace Ryujinx.Ava.UI.Models }); } - - public void OpenLocation() - { - ApplicationHelper.OpenSaveDir(SaveId); - } - - public async void Delete() - { - var result = await ContentDialogHelper.CreateConfirmationDialog(LocaleManager.Instance[LocaleKeys.DeleteUserSave], - LocaleManager.Instance[LocaleKeys.IrreversibleActionNote], - LocaleManager.Instance[LocaleKeys.InputDialogYes], - LocaleManager.Instance[LocaleKeys.InputDialogNo], ""); - - if (result == UserResult.Yes) - { - _horizonClient.Fs.DeleteSaveData(SaveDataSpaceId.User, SaveId); - - DeleteAction?.Invoke(); - } - } } }
\ No newline at end of file diff --git a/Ryujinx.Ava/UI/Models/TempProfile.cs b/Ryujinx.Ava/UI/Models/TempProfile.cs index 2dd7a6c8..05e16632 100644 --- a/Ryujinx.Ava/UI/Models/TempProfile.cs +++ b/Ryujinx.Ava/UI/Models/TempProfile.cs @@ -7,10 +7,12 @@ namespace Ryujinx.Ava.UI.Models public class TempProfile : BaseModel { private readonly UserProfile _profile; - private byte[] _image = null; + private byte[] _image; private string _name = String.Empty; private UserId _userId; + public uint MaxProfileNameLength => 0x20; + public byte[] Image { get => _image; @@ -28,9 +30,12 @@ namespace Ryujinx.Ava.UI.Models { _userId = value; OnPropertyChanged(); + OnPropertyChanged(nameof(UserIdString)); } } + public string UserIdString => _userId.ToString(); + public string Name { get => _name; @@ -52,7 +57,5 @@ namespace Ryujinx.Ava.UI.Models UserId = profile.UserId; } } - - public TempProfile(){} } }
\ No newline at end of file diff --git a/Ryujinx.Ava/UI/Models/UserProfile.cs b/Ryujinx.Ava/UI/Models/UserProfile.cs index 869db661..e7cd5300 100644 --- a/Ryujinx.Ava/UI/Models/UserProfile.cs +++ b/Ryujinx.Ava/UI/Models/UserProfile.cs @@ -1,5 +1,7 @@ +using Avalonia.Media; using Ryujinx.Ava.UI.Controls; using Ryujinx.Ava.UI.ViewModels; +using Ryujinx.Ava.UI.Views.User; using Ryujinx.HLE.HOS.Services.Account.Acc; using Profile = Ryujinx.HLE.HOS.Services.Account.Acc.UserProfile; @@ -12,6 +14,8 @@ namespace Ryujinx.Ava.UI.Models private byte[] _image; private string _name; private UserId _userId; + private bool _isPointerOver; + private IBrush _backgroundColor; public byte[] Image { @@ -43,27 +47,57 @@ namespace Ryujinx.Ava.UI.Models } } + public bool IsPointerOver + { + get => _isPointerOver; + set + { + _isPointerOver = value; + OnPropertyChanged(); + } + } + + public IBrush BackgroundColor + { + get => _backgroundColor; + set + { + _backgroundColor = value; + OnPropertyChanged(); + } + } + public UserProfile(Profile profile, NavigationDialogHost owner) { _profile = profile; _owner = owner; + UpdateBackground(); + Image = profile.Image; Name = profile.Name; UserId = profile.UserId; } - public bool IsOpened => _profile.AccountState == AccountState.Open; - public void UpdateState() { - OnPropertyChanged(nameof(IsOpened)); + UpdateBackground(); OnPropertyChanged(nameof(Name)); } + private void UpdateBackground() + { + Avalonia.Application.Current.Styles.TryGetResource("ControlFillColorSecondary", out object color); + + if (color is not null) + { + BackgroundColor = _profile.AccountState == AccountState.Open ? new SolidColorBrush((Color)color) : Brushes.Transparent; + } + } + public void Recover(UserProfile userProfile) { - _owner.Navigate(typeof(UserEditor), (_owner, userProfile, true)); + _owner.Navigate(typeof(UserEditorView), (_owner, userProfile, true)); } } }
\ No newline at end of file |
