1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-12 13:28:33 +00:00
Artemis/src/Artemis.UI/Screens/Settings/SettingsViewModel.cs
Robert 3367280576 Startup wizard - Correctly remember wizard was compelted
Settings - Fix double navigation occuring when opening settings
Settings - Fix double navigation occuring when opening releases
2025-02-16 11:15:52 +01:00

57 lines
1.8 KiB
C#

using System;
using System.Collections.ObjectModel;
using System.Linq;
using System.Reactive.Disposables;
using System.Reactive.Linq;
using System.Threading;
using System.Threading.Tasks;
using Artemis.UI.Routing;
using Artemis.UI.Shared;
using Artemis.UI.Shared.Routing;
using PropertyChanged.SourceGenerator;
using ReactiveUI;
namespace Artemis.UI.Screens.Settings;
public partial class SettingsViewModel : RoutableHostScreen<RoutableScreen>, IMainScreenViewModel
{
private readonly IRouter _router;
[Notify] private RouteViewModel? _selectedTab;
public SettingsViewModel(IRouter router)
{
_router = router;
SettingTabs = new ObservableCollection<RouteViewModel>
{
new("General", "settings/general"),
new("Plugins", "settings/plugins"),
new("Devices", "settings/devices"),
new("Releases", "settings/releases"),
new("Account", "settings/account"),
new("About", "settings/about"),
};
// Navigate on tab change
this.WhenActivated(d => this.WhenAnyValue(vm => vm.SelectedTab)
.WhereNotNull()
.Subscribe(s => _router.Navigate(s.Path, new RouterNavigationOptions {IgnoreOnPartialMatch = true}))
.DisposeWith(d));
}
public ObservableCollection<RouteViewModel> SettingTabs { get; }
public ViewModelBase? TitleBarViewModel => null;
/// <inheritdoc />
public override Task OnNavigating(NavigationArguments args, CancellationToken cancellationToken)
{
// Display tab change on navigate, if there is none forward to the first
SelectedTab = SettingTabs.FirstOrDefault(t => t.Matches(args.Path)) ?? SettingTabs.FirstOrDefault();
return Task.CompletedTask;
}
public void GoBack()
{
_router.Navigate("workshop");
}
}