From 64011c2fca0ce00121eb5a8009494ae4c07f5732 Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Thu, 9 Jan 2025 17:04:47 +0000 Subject: [PATCH 01/10] added a more custom emptystate template --- .../Details/DiagnosticDetailsView.axaml | 5 +- .../Diagnostics/List/DiagnosticListView.axaml | 92 +++++++++++++++---- 2 files changed, 78 insertions(+), 19 deletions(-) diff --git a/src/NexusMods.App.UI/Pages/Diagnostics/Details/DiagnosticDetailsView.axaml b/src/NexusMods.App.UI/Pages/Diagnostics/Details/DiagnosticDetailsView.axaml index a197346e0..53f446ccb 100644 --- a/src/NexusMods.App.UI/Pages/Diagnostics/Details/DiagnosticDetailsView.axaml +++ b/src/NexusMods.App.UI/Pages/Diagnostics/Details/DiagnosticDetailsView.axaml @@ -77,6 +77,7 @@ - - - + diff --git a/src/NexusMods.App.UI/Pages/Diagnostics/List/DiagnosticListView.axaml b/src/NexusMods.App.UI/Pages/Diagnostics/List/DiagnosticListView.axaml index 3115ca710..0a6663709 100644 --- a/src/NexusMods.App.UI/Pages/Diagnostics/List/DiagnosticListView.axaml +++ b/src/NexusMods.App.UI/Pages/Diagnostics/List/DiagnosticListView.axaml @@ -48,29 +48,89 @@ - + + + + - - - - + + VerticalAlignment="Center" + TextWrapping="Wrap" /> + - - - + + Margin="0" + Padding="0" + HorizontalAlignment="Stretch" + VerticalAlignment="Top"> + + + + + + + + + + + + + + + + + + + Date: Mon, 13 Jan 2025 13:08:43 +0000 Subject: [PATCH 02/10] page header as a seperate component --- .../PageHeader/IPageHeaderViewModel.cs | 11 +++++ .../Controls/PageHeader/PageHeader.axaml | 42 +++++++++++++++++ .../Controls/PageHeader/PageHeader.axaml.cs | 33 +++++++++++++ .../PageHeader/PageHeaderDesignViewModel.cs | 11 +++++ .../PageHeader/PageHeaderViewModel.cs | 19 ++++++++ src/NexusMods.App.UI/NexusMods.App.UI.csproj | 10 ++++ .../Diagnostics/List/DiagnosticListView.axaml | 47 ++++++++++--------- 7 files changed, 151 insertions(+), 22 deletions(-) create mode 100644 src/NexusMods.App.UI/Controls/PageHeader/IPageHeaderViewModel.cs create mode 100644 src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml create mode 100644 src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml.cs create mode 100644 src/NexusMods.App.UI/Controls/PageHeader/PageHeaderDesignViewModel.cs create mode 100644 src/NexusMods.App.UI/Controls/PageHeader/PageHeaderViewModel.cs diff --git a/src/NexusMods.App.UI/Controls/PageHeader/IPageHeaderViewModel.cs b/src/NexusMods.App.UI/Controls/PageHeader/IPageHeaderViewModel.cs new file mode 100644 index 000000000..ba6da15e9 --- /dev/null +++ b/src/NexusMods.App.UI/Controls/PageHeader/IPageHeaderViewModel.cs @@ -0,0 +1,11 @@ +using NexusMods.Abstractions.UI; +using NexusMods.Icons; + +namespace NexusMods.App.UI.Controls.PageHeader; + +public interface IPageHeaderViewModel : IViewModelInterface +{ + public string Title { get; set; } + public string Description { get; set; } + public IconValue Icon { get; set; } +} diff --git a/src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml b/src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml new file mode 100644 index 000000000..d0f8d48ee --- /dev/null +++ b/src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml.cs b/src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml.cs new file mode 100644 index 000000000..a057d1c7c --- /dev/null +++ b/src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml.cs @@ -0,0 +1,33 @@ +using System.Reactive.Disposables; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Controls.Primitives; +using Avalonia.ReactiveUI; +using NexusMods.App.UI.Controls.Alerts; +using NexusMods.App.UI.Controls.MiniGameWidget; +using ReactiveUI; + +namespace NexusMods.App.UI.Controls.PageHeader; + +public partial class PageHeader : ReactiveUserControl +{ + public PageHeader() + { + InitializeComponent(); + + this.WhenActivated(d => + { + this.OneWayBind(ViewModel, vm => vm.Title, v => v.TitleTextBlock.Text) + .DisposeWith(d); + + this.OneWayBind(ViewModel, vm => vm.Description, v => v.DescriptionTextBlock.Text) + .DisposeWith(d); + + this.OneWayBind(ViewModel, vm => vm.Icon, v => v.Icon.Value) + .DisposeWith(d); + } + ); + + } +} + diff --git a/src/NexusMods.App.UI/Controls/PageHeader/PageHeaderDesignViewModel.cs b/src/NexusMods.App.UI/Controls/PageHeader/PageHeaderDesignViewModel.cs new file mode 100644 index 000000000..f34d1134f --- /dev/null +++ b/src/NexusMods.App.UI/Controls/PageHeader/PageHeaderDesignViewModel.cs @@ -0,0 +1,11 @@ +using NexusMods.Abstractions.UI; +using NexusMods.Icons; + +namespace NexusMods.App.UI.Controls.PageHeader; + +public class PageHeaderDesignViewModel : AViewModel, IPageHeaderViewModel +{ + public string Title { get; set; } = "Page Title"; + public string Description { get; set; } = "Page description that can be really long"; + public IconValue Icon { get; set; } = IconValues.PictogramBox2; +} diff --git a/src/NexusMods.App.UI/Controls/PageHeader/PageHeaderViewModel.cs b/src/NexusMods.App.UI/Controls/PageHeader/PageHeaderViewModel.cs new file mode 100644 index 000000000..db84792a8 --- /dev/null +++ b/src/NexusMods.App.UI/Controls/PageHeader/PageHeaderViewModel.cs @@ -0,0 +1,19 @@ +using NexusMods.Abstractions.UI; +using NexusMods.Icons; + +namespace NexusMods.App.UI.Controls.PageHeader; + +public class PageHeaderViewModel : AViewModel, IPageHeaderViewModel +{ + public string Title { get; set; } + public string Description { get; set; } + public IconValue Icon { get; set; } + + public PageHeaderViewModel(string title, string description, IconValue icon) + { + Title = title; + Description = description; + Icon = icon; + } + +} diff --git a/src/NexusMods.App.UI/NexusMods.App.UI.csproj b/src/NexusMods.App.UI/NexusMods.App.UI.csproj index 1c93eea1e..349b9ee8c 100644 --- a/src/NexusMods.App.UI/NexusMods.App.UI.csproj +++ b/src/NexusMods.App.UI/NexusMods.App.UI.csproj @@ -713,6 +713,16 @@ ILeftMenuItemViewModel.cs + + PageHeader.axaml + Code + + + IPageHeaderViewModel.cs + + + IPageHeaderViewModel.cs + diff --git a/src/NexusMods.App.UI/Pages/Diagnostics/List/DiagnosticListView.axaml b/src/NexusMods.App.UI/Pages/Diagnostics/List/DiagnosticListView.axaml index 0a6663709..f372d5a5d 100644 --- a/src/NexusMods.App.UI/Pages/Diagnostics/List/DiagnosticListView.axaml +++ b/src/NexusMods.App.UI/Pages/Diagnostics/List/DiagnosticListView.axaml @@ -10,6 +10,7 @@ xmlns:icons="clr-namespace:NexusMods.Icons;assembly=NexusMods.Icons" xmlns:resources="clr-namespace:NexusMods.App.UI.Resources" xmlns:diagnostics="clr-namespace:NexusMods.App.UI.Controls.Diagnostics" + xmlns:pageHeader="clr-namespace:NexusMods.App.UI.Controls.PageHeader" mc:Ignorable="d" d:DesignWidth="900" d:DesignHeight="500" x:Class="NexusMods.App.UI.Pages.Diagnostics.DiagnosticListView"> @@ -47,29 +48,31 @@ + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + Date: Thu, 16 Jan 2025 09:01:50 +0000 Subject: [PATCH 03/10] healthcheck header change --- .../Details/DiagnosticDetailsView.axaml | 56 ++++++++++--------- .../Details/DiagnosticDetailsView.axaml.cs | 6 +- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/src/NexusMods.App.UI/Pages/Diagnostics/Details/DiagnosticDetailsView.axaml b/src/NexusMods.App.UI/Pages/Diagnostics/Details/DiagnosticDetailsView.axaml index 53f446ccb..d0f9faf7c 100644 --- a/src/NexusMods.App.UI/Pages/Diagnostics/Details/DiagnosticDetailsView.axaml +++ b/src/NexusMods.App.UI/Pages/Diagnostics/Details/DiagnosticDetailsView.axaml @@ -26,34 +26,40 @@ - + + + + - - - - - + + + + + - + TextWrapping="Wrap" /> + - - - - - - + IsEnabled="False" /> + IsEnabled="False" /> diff --git a/src/NexusMods.App.UI/Pages/Diagnostics/Details/DiagnosticDetailsView.axaml.cs b/src/NexusMods.App.UI/Pages/Diagnostics/Details/DiagnosticDetailsView.axaml.cs index 779a49d3e..c88f664e0 100644 --- a/src/NexusMods.App.UI/Pages/Diagnostics/Details/DiagnosticDetailsView.axaml.cs +++ b/src/NexusMods.App.UI/Pages/Diagnostics/Details/DiagnosticDetailsView.axaml.cs @@ -40,20 +40,20 @@ private void InitializeData(IDiagnosticDetailsViewModel vm) case DiagnosticSeverity.Suggestion: SeverityTitleTextBlock.Text = Language.DiagnosticDetailsView_SeverityTitle_SUGGESTION; SeverityTitleTextBlock.Classes.Add("ForegroundInfoStrong"); - SeverityExplanationTextBlock.Text = "Suggestions may offer improvements to your experience."; + DescriptionTextBlock.Text = "Suggestions may offer improvements to your experience."; MarkdownWrapperBorder.Background = SolidColorBrush.Parse("#0D93C5FD"); MarkdownWrapperBorder.BorderBrush = SolidColorBrush.Parse("#6693C5FD"); break; case DiagnosticSeverity.Warning: SeverityTitleTextBlock.Text = Language.DiagnosticDetailsView_SeverityTitle_WARNING; SeverityTitleTextBlock.Classes.Add("ForegroundWarningStrong"); - SeverityExplanationTextBlock.Text = "Warnings may negatively impact your experience."; + DescriptionTextBlock.Text = "Warnings may negatively impact your experience."; MarkdownWrapperBorder.Background = SolidColorBrush.Parse("#0DFEF08A"); MarkdownWrapperBorder.BorderBrush = SolidColorBrush.Parse("#66FEF08A"); break; case DiagnosticSeverity.Critical: SeverityTitleTextBlock.Text = Language.DiagnosticDetailsView_SeverityTitle_CRITICAL_ERROR; - SeverityExplanationTextBlock.Text = "Critical errors make the game unplayable."; + DescriptionTextBlock.Text = "Critical errors make the game unplayable."; SeverityTitleTextBlock.Classes.Add("ForegroundDangerStrong"); MarkdownWrapperBorder.Background = SolidColorBrush.Parse("#0DF87171"); MarkdownWrapperBorder.BorderBrush = SolidColorBrush.Parse("#66F87171"); From 5e13ba039e0a273987dbe9de20daa6264adaac37 Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Thu, 16 Jan 2025 09:48:48 +0000 Subject: [PATCH 04/10] Converted to a TemplatedControl --- .../PageHeader/IPageHeaderViewModel.cs | 11 -- .../Controls/PageHeader/PageHeader.axaml | 51 ++----- .../Controls/PageHeader/PageHeader.axaml.cs | 124 +++++++++++++++--- .../PageHeader/PageHeaderDesignViewModel.cs | 11 -- .../PageHeader/PageHeaderViewModel.cs | 19 --- src/NexusMods.App.UI/NexusMods.App.UI.csproj | 6 - .../PageHeaderControlTheme.axaml | 49 +++++++ 7 files changed, 166 insertions(+), 105 deletions(-) delete mode 100644 src/NexusMods.App.UI/Controls/PageHeader/IPageHeaderViewModel.cs delete mode 100644 src/NexusMods.App.UI/Controls/PageHeader/PageHeaderDesignViewModel.cs delete mode 100644 src/NexusMods.App.UI/Controls/PageHeader/PageHeaderViewModel.cs create mode 100644 src/Themes/NexusMods.Themes.NexusFluentDark/Resources/ControlThemes/PageHeaderControlTheme.axaml diff --git a/src/NexusMods.App.UI/Controls/PageHeader/IPageHeaderViewModel.cs b/src/NexusMods.App.UI/Controls/PageHeader/IPageHeaderViewModel.cs deleted file mode 100644 index ba6da15e9..000000000 --- a/src/NexusMods.App.UI/Controls/PageHeader/IPageHeaderViewModel.cs +++ /dev/null @@ -1,11 +0,0 @@ -using NexusMods.Abstractions.UI; -using NexusMods.Icons; - -namespace NexusMods.App.UI.Controls.PageHeader; - -public interface IPageHeaderViewModel : IViewModelInterface -{ - public string Title { get; set; } - public string Description { get; set; } - public IconValue Icon { get; set; } -} diff --git a/src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml b/src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml index d0f8d48ee..f45c1de74 100644 --- a/src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml +++ b/src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml @@ -1,42 +1,15 @@ - + - - - - - - - - + + + - - - - - - + + + - + diff --git a/src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml.cs b/src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml.cs index a057d1c7c..2bbcad0d5 100644 --- a/src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml.cs +++ b/src/NexusMods.App.UI/Controls/PageHeader/PageHeader.axaml.cs @@ -1,33 +1,119 @@ -using System.Reactive.Disposables; using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Primitives; -using Avalonia.ReactiveUI; -using NexusMods.App.UI.Controls.Alerts; -using NexusMods.App.UI.Controls.MiniGameWidget; -using ReactiveUI; +using NexusMods.Icons; namespace NexusMods.App.UI.Controls.PageHeader; -public partial class PageHeader : ReactiveUserControl +public class PageHeader : ContentControl { - public PageHeader() + + /// + /// Defines the Title property of the . + /// + public static readonly StyledProperty TitleProperty = AvaloniaProperty.Register(nameof(Title), defaultValue: "Default Title"); + + /// + /// Defines the Title property of the . + /// + public static readonly StyledProperty DescriptionProperty = AvaloniaProperty.Register(nameof(Description), defaultValue: "This is the default description of the page."); + + /// + /// Defines the Title property of the . + /// + public static readonly StyledProperty IconProperty = AvaloniaProperty.Register(nameof(Icon), defaultValue: IconValues.PictogramBox2); + + /// + /// Gets or sets the title text of the . + /// + public string? Title + { + get => GetValue(TitleProperty); + set => SetValue(TitleProperty, value); + } + /// + /// Gets or sets the description text of the . + /// + public string? Description + { + get => GetValue(DescriptionProperty); + set => SetValue(DescriptionProperty, value); + } + + /// + /// Gets or sets the icon of the . + /// + public IconValue? Icon + { + get => GetValue(IconProperty); + set => SetValue(IconProperty, value); + } + + private TextBlock? _titleText; + private TextBlock? _descriptionText; + private UnifiedIcon? _unifiedIcon; + + protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change) { - InitializeComponent(); + base.OnPropertyChanged(change); - this.WhenActivated(d => - { - this.OneWayBind(ViewModel, vm => vm.Title, v => v.TitleTextBlock.Text) - .DisposeWith(d); + if (change.Property == TitleProperty) + { + UpdateTitle(change.GetNewValue()); + } + else if (change.Property == DescriptionProperty) + { + UpdateDescription(change.GetNewValue()); + } + else if (change.Property == IconProperty) + { + UpdateIcon(change.GetNewValue()); + } + } + + protected override void OnApplyTemplate(TemplateAppliedEventArgs e) + { + _titleText = e.NameScope.Find("TitleTextBlock"); + if (_titleText != null) + UpdateTitle(Title); - this.OneWayBind(ViewModel, vm => vm.Description, v => v.DescriptionTextBlock.Text) - .DisposeWith(d); + _descriptionText = e.NameScope.Find("DescriptionTextBlock"); + if (_descriptionText != null) + UpdateDescription(Description); - this.OneWayBind(ViewModel, vm => vm.Icon, v => v.Icon.Value) - .DisposeWith(d); - } - ); + _unifiedIcon = e.NameScope.Find("Icon"); + if (_unifiedIcon != null) + UpdateIcon(Icon); + } + + /// + /// Updates the visual title text of the . + /// + /// The new title text + private void UpdateTitle(string? newTitle) + { + if (_titleText != null) + _titleText.Text = newTitle; + } + + /// + /// Updates the visual title text of the . + /// + /// The new description text + private void UpdateDescription(string? newDescription) + { + if (_descriptionText != null) + _descriptionText.Text = newDescription; + } + + /// + /// Updates the visual icon of the . + /// + /// The new icon + private void UpdateIcon(IconValue? newIcon) + { + if (_unifiedIcon != null) + _unifiedIcon.Value = newIcon; } } - diff --git a/src/NexusMods.App.UI/Controls/PageHeader/PageHeaderDesignViewModel.cs b/src/NexusMods.App.UI/Controls/PageHeader/PageHeaderDesignViewModel.cs deleted file mode 100644 index f34d1134f..000000000 --- a/src/NexusMods.App.UI/Controls/PageHeader/PageHeaderDesignViewModel.cs +++ /dev/null @@ -1,11 +0,0 @@ -using NexusMods.Abstractions.UI; -using NexusMods.Icons; - -namespace NexusMods.App.UI.Controls.PageHeader; - -public class PageHeaderDesignViewModel : AViewModel, IPageHeaderViewModel -{ - public string Title { get; set; } = "Page Title"; - public string Description { get; set; } = "Page description that can be really long"; - public IconValue Icon { get; set; } = IconValues.PictogramBox2; -} diff --git a/src/NexusMods.App.UI/Controls/PageHeader/PageHeaderViewModel.cs b/src/NexusMods.App.UI/Controls/PageHeader/PageHeaderViewModel.cs deleted file mode 100644 index db84792a8..000000000 --- a/src/NexusMods.App.UI/Controls/PageHeader/PageHeaderViewModel.cs +++ /dev/null @@ -1,19 +0,0 @@ -using NexusMods.Abstractions.UI; -using NexusMods.Icons; - -namespace NexusMods.App.UI.Controls.PageHeader; - -public class PageHeaderViewModel : AViewModel, IPageHeaderViewModel -{ - public string Title { get; set; } - public string Description { get; set; } - public IconValue Icon { get; set; } - - public PageHeaderViewModel(string title, string description, IconValue icon) - { - Title = title; - Description = description; - Icon = icon; - } - -} diff --git a/src/NexusMods.App.UI/NexusMods.App.UI.csproj b/src/NexusMods.App.UI/NexusMods.App.UI.csproj index 042a2b692..22969cecf 100644 --- a/src/NexusMods.App.UI/NexusMods.App.UI.csproj +++ b/src/NexusMods.App.UI/NexusMods.App.UI.csproj @@ -730,12 +730,6 @@ PageHeader.axaml Code - - IPageHeaderViewModel.cs - - - IPageHeaderViewModel.cs - diff --git a/src/Themes/NexusMods.Themes.NexusFluentDark/Resources/ControlThemes/PageHeaderControlTheme.axaml b/src/Themes/NexusMods.Themes.NexusFluentDark/Resources/ControlThemes/PageHeaderControlTheme.axaml new file mode 100644 index 000000000..b3144be34 --- /dev/null +++ b/src/Themes/NexusMods.Themes.NexusFluentDark/Resources/ControlThemes/PageHeaderControlTheme.axaml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From d02d6c5148e988ae10e361fe209f8e7c8d65e60a Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Thu, 16 Jan 2025 13:12:49 +0000 Subject: [PATCH 05/10] Added PageHeader to other pages --- .../Diagnostics/List/DiagnosticListView.axaml | 29 ++---------- .../Pages/MyGames/MyGamesView.axaml | 28 +++++++---- .../Pages/MyLoadouts/MyLoadoutsView.axaml | 46 +++++++++++-------- .../Resources/Language.Designer.cs | 31 ++++++++++++- src/NexusMods.App.UI/Resources/Language.resx | 11 +++++ .../Resources/ResourceIndex.axaml | 1 + 6 files changed, 90 insertions(+), 56 deletions(-) diff --git a/src/NexusMods.App.UI/Pages/Diagnostics/List/DiagnosticListView.axaml b/src/NexusMods.App.UI/Pages/Diagnostics/List/DiagnosticListView.axaml index f372d5a5d..ab4d6eebf 100644 --- a/src/NexusMods.App.UI/Pages/Diagnostics/List/DiagnosticListView.axaml +++ b/src/NexusMods.App.UI/Pages/Diagnostics/List/DiagnosticListView.axaml @@ -48,31 +48,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + xmlns:panels="clr-namespace:Avalonia.Labs.Panels;assembly=Avalonia.Labs.Panels" + xmlns:pageHeader="clr-namespace:NexusMods.App.UI.Controls.PageHeader"> @@ -34,16 +35,22 @@ - - - - - - + + + + + + + + + + @@ -90,6 +97,7 @@ + diff --git a/src/NexusMods.App.UI/Pages/MyLoadouts/MyLoadoutsView.axaml b/src/NexusMods.App.UI/Pages/MyLoadouts/MyLoadoutsView.axaml index 60622246e..c3e250193 100644 --- a/src/NexusMods.App.UI/Pages/MyLoadouts/MyLoadoutsView.axaml +++ b/src/NexusMods.App.UI/Pages/MyLoadouts/MyLoadoutsView.axaml @@ -10,6 +10,7 @@ xmlns:controls="clr-namespace:NexusMods.App.UI.Controls" xmlns:ui1="clr-namespace:NexusMods.Abstractions.UI;assembly=NexusMods.Abstractions.UI" xmlns:icons="clr-namespace:NexusMods.Icons;assembly=NexusMods.Icons" + xmlns:pageHeader="clr-namespace:NexusMods.App.UI.Controls.PageHeader" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="NexusMods.App.UI.Pages.MyLoadouts.MyLoadoutsView"> @@ -19,30 +20,37 @@ - + - - - - - - - + + + - - + + + + + + + + + + + + + + + + @@ -83,7 +91,7 @@ + - diff --git a/src/NexusMods.App.UI/Resources/Language.Designer.cs b/src/NexusMods.App.UI/Resources/Language.Designer.cs index 364baf6d3..211c2267f 100644 --- a/src/NexusMods.App.UI/Resources/Language.Designer.cs +++ b/src/NexusMods.App.UI/Resources/Language.Designer.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by a tool. // @@ -366,6 +366,24 @@ public static string DiagnosticListView_EmptyState_Subtitle { } } + /// + /// Looks up a localized string similar to Review your Loadout for any issues and learn how to resolve them if needed. + /// + public static string DiagnosticListView_Page_Description { + get { + return ResourceManager.GetString("DiagnosticListView.Page_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Health Check. + /// + public static string DiagnosticListView_Page_Title { + get { + return ResourceManager.GetString("DiagnosticListView.Page_Title", resourceCulture); + } + } + /// /// Looks up a localized string similar to Health Check. /// @@ -1574,7 +1592,7 @@ public static string MessageBox_Button_No { } /// - /// Looks up a localized string similar to Ok. + /// Looks up a localized string similar to OK. /// public static string MessageBox_Button_Ok { get { @@ -1694,6 +1712,15 @@ public static string MyGamesView__NoGamesManagedText { } } + /// + /// Looks up a localized string similar to Lists all the games that we support. + /// + public static string MyGamesView__Page_Description { + get { + return ResourceManager.GetString("MyGamesView__Page_Description", resourceCulture); + } + } + /// /// Looks up a localized string similar to Games Added. /// diff --git a/src/NexusMods.App.UI/Resources/Language.resx b/src/NexusMods.App.UI/Resources/Language.resx index 0ab5f6600..0a9c5537a 100644 --- a/src/NexusMods.App.UI/Resources/Language.resx +++ b/src/NexusMods.App.UI/Resources/Language.resx @@ -231,6 +231,9 @@ Supported Games + + Lists all the games that we support + Manage @@ -595,6 +598,12 @@ Download {0} mods from Nexus Mods {0} is the name of the currently managed game + + Health Check + + + Review your Loadout for any issues and learn how to resolve them if needed + Your loadout passed the health check without issues @@ -619,6 +628,8 @@ Create game Loadouts which contain their own individual mod preferences and settings. Switch between Loadouts and apply the one you want to play. + + {0} Loadouts Where {0} is the name of the game diff --git a/src/Themes/NexusMods.Themes.NexusFluentDark/Resources/ResourceIndex.axaml b/src/Themes/NexusMods.Themes.NexusFluentDark/Resources/ResourceIndex.axaml index ea0a459f2..bdc7e68da 100644 --- a/src/Themes/NexusMods.Themes.NexusFluentDark/Resources/ResourceIndex.axaml +++ b/src/Themes/NexusMods.Themes.NexusFluentDark/Resources/ResourceIndex.axaml @@ -13,5 +13,6 @@ + From 03a976e4f2d8f3c07e498b1aedb8fd57338c2b0c Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Thu, 16 Jan 2025 17:02:38 +0000 Subject: [PATCH 06/10] updated mygames --- .../Pages/MyGames/MyGamesDesignViewModel.cs | 2 +- .../Pages/MyGames/MyGamesView.axaml | 41 ++++++------------- .../Resources/Language.Designer.cs | 2 +- src/NexusMods.App.UI/Resources/Language.resx | 2 +- 4 files changed, 16 insertions(+), 31 deletions(-) diff --git a/src/NexusMods.App.UI/Pages/MyGames/MyGamesDesignViewModel.cs b/src/NexusMods.App.UI/Pages/MyGames/MyGamesDesignViewModel.cs index 2e5efcd9e..b851f1ad2 100644 --- a/src/NexusMods.App.UI/Pages/MyGames/MyGamesDesignViewModel.cs +++ b/src/NexusMods.App.UI/Pages/MyGames/MyGamesDesignViewModel.cs @@ -18,7 +18,7 @@ public class MyGamesDesignViewModel : APageViewModel, IMyGame public MyGamesDesignViewModel() : base(new DesignWindowManager()) { - var detectedGames = Enumerable.Range(0, 2) + var detectedGames = Enumerable.Range(0, 0) .Select(_ => new GameWidgetDesignViewModel()) .ToArray(); diff --git a/src/NexusMods.App.UI/Pages/MyGames/MyGamesView.axaml b/src/NexusMods.App.UI/Pages/MyGames/MyGamesView.axaml index 8beddb5a8..c5ab682b4 100644 --- a/src/NexusMods.App.UI/Pages/MyGames/MyGamesView.axaml +++ b/src/NexusMods.App.UI/Pages/MyGames/MyGamesView.axaml @@ -17,11 +17,11 @@ xmlns:icons="clr-namespace:NexusMods.Icons;assembly=NexusMods.Icons" xmlns:panels="clr-namespace:Avalonia.Labs.Panels;assembly=Avalonia.Labs.Panels" xmlns:pageHeader="clr-namespace:NexusMods.App.UI.Controls.PageHeader"> - + - + - - - - - - - - - - - - + Icon="{x:Static icons:IconValues.PictogramGame3D}" /> + - + - + - + TextWrapping="Wrap" + Margin="0,16,0,0"/> - - + @@ -94,7 +79,7 @@ - + diff --git a/src/NexusMods.App.UI/Resources/Language.Designer.cs b/src/NexusMods.App.UI/Resources/Language.Designer.cs index 2e919f414..a1da93bee 100644 --- a/src/NexusMods.App.UI/Resources/Language.Designer.cs +++ b/src/NexusMods.App.UI/Resources/Language.Designer.cs @@ -1740,7 +1740,7 @@ public static string MyGamesView__NoGamesManagedText { } /// - /// Looks up a localized string similar to Lists all the games that we support. + /// Looks up a localized string similar to Add games to get started. /// public static string MyGamesView__Page_Description { get { diff --git a/src/NexusMods.App.UI/Resources/Language.resx b/src/NexusMods.App.UI/Resources/Language.resx index 0f997d9a8..596bfa4b2 100644 --- a/src/NexusMods.App.UI/Resources/Language.resx +++ b/src/NexusMods.App.UI/Resources/Language.resx @@ -232,7 +232,7 @@ Supported Games - Lists all the games that we support + Add games to get started Manage From 6b12c9bdb9dc8ea5bae0c4b5c9baa65d85202f0a Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Mon, 20 Jan 2025 11:02:42 +0000 Subject: [PATCH 07/10] Added extra textblock for mygames --- src/NexusMods.App.UI/Pages/MyGames/MyGamesView.axaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/NexusMods.App.UI/Pages/MyGames/MyGamesView.axaml b/src/NexusMods.App.UI/Pages/MyGames/MyGamesView.axaml index c5ab682b4..5072416f2 100644 --- a/src/NexusMods.App.UI/Pages/MyGames/MyGamesView.axaml +++ b/src/NexusMods.App.UI/Pages/MyGames/MyGamesView.axaml @@ -135,6 +135,9 @@ Margin="0" /> + Date: Wed, 22 Jan 2025 11:52:56 +0000 Subject: [PATCH 08/10] Style selector that actually overrides the default --- .../Diagnostics/DiagnosticEntryStyles.axaml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Themes/NexusMods.Themes.NexusFluentDark/Styles/UserControls/Diagnostics/DiagnosticEntryStyles.axaml b/src/Themes/NexusMods.Themes.NexusFluentDark/Styles/UserControls/Diagnostics/DiagnosticEntryStyles.axaml index e41974406..f63b92e5e 100644 --- a/src/Themes/NexusMods.Themes.NexusFluentDark/Styles/UserControls/Diagnostics/DiagnosticEntryStyles.axaml +++ b/src/Themes/NexusMods.Themes.NexusFluentDark/Styles/UserControls/Diagnostics/DiagnosticEntryStyles.axaml @@ -25,12 +25,23 @@ + + + + From e602cfa47016b7e1300d24a7990c377563dcc236 Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Wed, 22 Jan 2025 14:21:41 +0000 Subject: [PATCH 09/10] updated colors --- .../UserControls/Diagnostics/DiagnosticEntryStyles.axaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Themes/NexusMods.Themes.NexusFluentDark/Styles/UserControls/Diagnostics/DiagnosticEntryStyles.axaml b/src/Themes/NexusMods.Themes.NexusFluentDark/Styles/UserControls/Diagnostics/DiagnosticEntryStyles.axaml index f63b92e5e..dd3542448 100644 --- a/src/Themes/NexusMods.Themes.NexusFluentDark/Styles/UserControls/Diagnostics/DiagnosticEntryStyles.axaml +++ b/src/Themes/NexusMods.Themes.NexusFluentDark/Styles/UserControls/Diagnostics/DiagnosticEntryStyles.axaml @@ -30,10 +30,10 @@ From 50a99408914f01628ac914afb20109bd81a56ef7 Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Mon, 27 Jan 2025 10:36:24 +0000 Subject: [PATCH 10/10] Removed commented code --- .../Pages/MyGames/MyGamesDesignViewModel.cs | 2 +- .../Pages/MyLoadouts/MyLoadoutsView.axaml | 17 ----------------- 2 files changed, 1 insertion(+), 18 deletions(-) diff --git a/src/NexusMods.App.UI/Pages/MyGames/MyGamesDesignViewModel.cs b/src/NexusMods.App.UI/Pages/MyGames/MyGamesDesignViewModel.cs index b851f1ad2..2e5efcd9e 100644 --- a/src/NexusMods.App.UI/Pages/MyGames/MyGamesDesignViewModel.cs +++ b/src/NexusMods.App.UI/Pages/MyGames/MyGamesDesignViewModel.cs @@ -18,7 +18,7 @@ public class MyGamesDesignViewModel : APageViewModel, IMyGame public MyGamesDesignViewModel() : base(new DesignWindowManager()) { - var detectedGames = Enumerable.Range(0, 0) + var detectedGames = Enumerable.Range(0, 2) .Select(_ => new GameWidgetDesignViewModel()) .ToArray(); diff --git a/src/NexusMods.App.UI/Pages/MyLoadouts/MyLoadoutsView.axaml b/src/NexusMods.App.UI/Pages/MyLoadouts/MyLoadoutsView.axaml index c3e250193..21e5bad7c 100644 --- a/src/NexusMods.App.UI/Pages/MyLoadouts/MyLoadoutsView.axaml +++ b/src/NexusMods.App.UI/Pages/MyLoadouts/MyLoadoutsView.axaml @@ -35,23 +35,6 @@ Header="{x:Static resources:Language.MyLoadoutsEmptyState_Header}" Subtitle="{x:Static resources:Language.MyLoadoutsEmptyState_Subtitle}"> - - - - - - - - - - - - - - - - -