74 lines
2.2 KiB
C#
74 lines
2.2 KiB
C#
// This Source Code Form is subject to the terms of the MIT License.
|
|
// If a copy of the MIT was not distributed with this file, You can obtain one at https://opensource.org/licenses/MIT.
|
|
// Copyright (C) Leszek Pomianowski and WPF UI Contributors.
|
|
// All Rights Reserved.
|
|
|
|
using System.Reflection;
|
|
using System.Windows.Media;
|
|
|
|
using WPFluent.Appearance;
|
|
using WPFluent.Controls;
|
|
using WPFluent.Extensions;
|
|
|
|
namespace WPFluent.Gallery.ViewModels.Pages;
|
|
|
|
public sealed partial class SettingsViewModel(INavigationService navigationService) : ViewModel
|
|
{
|
|
private bool _isInitialized = false;
|
|
|
|
[ObservableProperty]
|
|
private string _appVersion = string.Empty;
|
|
|
|
[ObservableProperty]
|
|
private ApplicationTheme _currentApplicationTheme = ApplicationTheme.Unknown;
|
|
|
|
[ObservableProperty]
|
|
private NavigationViewPaneDisplayMode _currentApplicationNavigationStyle =
|
|
NavigationViewPaneDisplayMode.Left;
|
|
|
|
public override void OnNavigatedTo()
|
|
{
|
|
if (!_isInitialized)
|
|
{
|
|
InitializeViewModel();
|
|
}
|
|
}
|
|
|
|
partial void OnCurrentApplicationThemeChanged(ApplicationTheme oldValue, ApplicationTheme newValue)
|
|
{
|
|
ApplicationThemeManager.Apply(newValue);
|
|
}
|
|
|
|
partial void OnCurrentApplicationNavigationStyleChanged(
|
|
NavigationViewPaneDisplayMode oldValue,
|
|
NavigationViewPaneDisplayMode newValue
|
|
)
|
|
{
|
|
_ = navigationService.SetPaneDisplayMode(newValue);
|
|
}
|
|
|
|
private void InitializeViewModel()
|
|
{
|
|
CurrentApplicationTheme = ApplicationThemeManager.GetAppTheme();
|
|
AppVersion = $"{GetAssemblyVersion()}";
|
|
|
|
ApplicationThemeManager.Changed += OnThemeChanged;
|
|
|
|
_isInitialized = true;
|
|
}
|
|
|
|
private void OnThemeChanged(ApplicationTheme currentApplicationTheme, Color systemAccent)
|
|
{
|
|
// Update the theme if it has been changed elsewhere than in the settings.
|
|
if (CurrentApplicationTheme != currentApplicationTheme)
|
|
{
|
|
CurrentApplicationTheme = currentApplicationTheme;
|
|
}
|
|
}
|
|
|
|
private static string GetAssemblyVersion()
|
|
{
|
|
return Assembly.GetExecutingAssembly().GetName().Version?.ToString() ?? string.Empty;
|
|
}
|
|
}
|