Implemented "System" option for theme.

This commit is contained in:
Chris Bordeman 2024-10-12 02:17:35 -04:00
parent 71b8e9e51c
commit 63e28b13c1
3 changed files with 19 additions and 14 deletions

View File

@ -90,14 +90,10 @@ namespace LibationAvalonia
if (setupDialog.Config.LibationSettingsAreValid) if (setupDialog.Config.LibationSettingsAreValid)
{ {
var theme string theme = setupDialog.SelectedTheme.Content as string;
= setupDialog.SelectedTheme.Content is nameof(ThemeVariant.Dark)
? nameof(ThemeVariant.Dark)
: nameof(ThemeVariant.Light);
setupDialog.Config.SetString(theme, nameof(ThemeVariant)); setupDialog.Config.SetString(theme, nameof(ThemeVariant));
await RunMigrationsAsync(setupDialog.Config); await RunMigrationsAsync(setupDialog.Config);
LibraryTask = Task.Run(() => DbContexts.GetLibrary_Flat_NoTracking(includeParents: true)); LibraryTask = Task.Run(() => DbContexts.GetLibrary_Flat_NoTracking(includeParents: true));
AudibleUtilities.AudibleApiStorage.EnsureAccountsSettingsFileExists(); AudibleUtilities.AudibleApiStorage.EnsureAccountsSettingsFileExists();
@ -208,7 +204,13 @@ namespace LibationAvalonia
private static void ShowMainWindow(IClassicDesktopStyleApplicationLifetime desktop) private static void ShowMainWindow(IClassicDesktopStyleApplicationLifetime desktop)
{ {
Current.RequestedThemeVariant = Configuration.Instance.GetString(propertyName: nameof(ThemeVariant)) is "Dark" ? ThemeVariant.Dark : ThemeVariant.Light; Current.RequestedThemeVariant = Configuration.Instance.GetString(propertyName: nameof(ThemeVariant)) switch
{
nameof(ThemeVariant.Dark) => ThemeVariant.Dark,
nameof(ThemeVariant.Light) => ThemeVariant.Light,
// "System"
_ => ThemeVariant.Default
};
//Reload colors for current theme //Reload colors for current theme
LoadStyles(); LoadStyles();

View File

@ -2,12 +2,14 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:dialogs="clr-namespace:LibationAvalonia.Dialogs"
mc:Ignorable="d" d:DesignWidth="500" d:DesignHeight="350" mc:Ignorable="d" d:DesignWidth="500" d:DesignHeight="350"
x:Class="LibationAvalonia.Dialogs.SetupDialog" x:Class="LibationAvalonia.Dialogs.SetupDialog"
WindowStartupLocation="CenterScreen" WindowStartupLocation="CenterScreen"
Width="500" Height="350" Width="500" Height="350"
Icon="/Assets/libation.ico" Icon="/Assets/libation.ico"
Title="Welcome to Libation"> Title="Welcome to Libation"
x:DataType="dialogs:SetupDialog">
<Grid <Grid
Margin="10" Margin="10"
@ -58,6 +60,7 @@
SelectedIndex="0" SelectedIndex="0"
SelectedItem="{Binding SelectedTheme, Mode=OneWayToSource}"> SelectedItem="{Binding SelectedTheme, Mode=OneWayToSource}">
<ComboBox.Items> <ComboBox.Items>
<ComboBoxItem Content="System" />
<ComboBoxItem Content="Light" /> <ComboBoxItem Content="Light" />
<ComboBoxItem Content="Dark" /> <ComboBoxItem Content="Dark" />
</ComboBox.Items> </ComboBox.Items>

View File

@ -31,10 +31,10 @@ namespace LibationAvalonia.ViewModels.Settings
LoggingLevel = config.LogLevel; LoggingLevel = config.LogLevel;
GridScaleFactor = scaleFactorToLinearRange(config.GridScaleFactor); GridScaleFactor = scaleFactorToLinearRange(config.GridScaleFactor);
GridFontScaleFactor = scaleFactorToLinearRange(config.GridFontScaleFactor); GridFontScaleFactor = scaleFactorToLinearRange(config.GridFontScaleFactor);
ThemeVariant = initialThemeVariant
= Configuration.Instance.GetString(propertyName: nameof(ThemeVariant)) is nameof(Avalonia.Styling.ThemeVariant.Dark) ThemeVariant = initialThemeVariant = Configuration.Instance.GetString(propertyName: nameof(ThemeVariant));
? nameof(Avalonia.Styling.ThemeVariant.Dark) if (string.IsNullOrWhiteSpace(initialThemeVariant))
: nameof(Avalonia.Styling.ThemeVariant.Light); ThemeVariant = initialThemeVariant = "System";
} }
public void SaveSettings(Configuration config) public void SaveSettings(Configuration config)
@ -83,7 +83,7 @@ namespace LibationAvalonia.ViewModels.Settings
public string GridScaleFactorText { get; } = Configuration.GetDescription(nameof(Configuration.GridScaleFactor)); public string GridScaleFactorText { get; } = Configuration.GetDescription(nameof(Configuration.GridScaleFactor));
public string GridFontScaleFactorText { get; } = Configuration.GetDescription(nameof(Configuration.GridFontScaleFactor)); public string GridFontScaleFactorText { get; } = Configuration.GetDescription(nameof(Configuration.GridFontScaleFactor));
public string BetaOptInText { get; } = Configuration.GetDescription(nameof(Configuration.BetaOptIn)); public string BetaOptInText { get; } = Configuration.GetDescription(nameof(Configuration.BetaOptIn));
public string[] Themes { get; } = { nameof(Avalonia.Styling.ThemeVariant.Light), nameof(Avalonia.Styling.ThemeVariant.Dark) }; public string[] Themes { get; } = { "System", nameof(Avalonia.Styling.ThemeVariant.Light), nameof(Avalonia.Styling.ThemeVariant.Dark) };
public string BooksDirectory { get; set; } public string BooksDirectory { get; set; }
public bool SavePodcastsToParentFolder { get; set; } public bool SavePodcastsToParentFolder { get; set; }