From 2cf7f97a8b1f9268754a77a070434217f4fea04e Mon Sep 17 00:00:00 2001 From: DB P Date: Sun, 13 Apr 2025 07:37:55 +0900 Subject: [PATCH] Add Import Function --- Flow.Launcher.Core/Resource/Theme.cs | 2 +- Flow.Launcher/Languages/en.xaml | 3 ++ .../ViewModels/SettingsPaneThemeViewModel.cs | 54 ++++++++++++++++++- .../SettingPages/Views/SettingsPaneTheme.xaml | 11 +++- 4 files changed, 66 insertions(+), 4 deletions(-) diff --git a/Flow.Launcher.Core/Resource/Theme.cs b/Flow.Launcher.Core/Resource/Theme.cs index 59e76e2d2..26fbfb1b4 100644 --- a/Flow.Launcher.Core/Resource/Theme.cs +++ b/Flow.Launcher.Core/Resource/Theme.cs @@ -324,7 +324,7 @@ namespace Flow.Launcher.Core.Resource return dict; } - private ResourceDictionary GetCurrentResourceDictionary() + public ResourceDictionary GetCurrentResourceDictionary() { return GetResourceDictionary(_settings.Theme); } diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml index 6d63c41ed..f3a645767 100644 --- a/Flow.Launcher/Languages/en.xaml +++ b/Flow.Launcher/Languages/en.xaml @@ -199,6 +199,9 @@ Result Title Font Result Subtitle Font Reset + Reset to the recommended font and size settings. + Import Theme Size + If a size value intended by the theme designer is available, it will be retrieved and applied. Customize Window Mode Opacity diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs index ee6dfdbe8..7bc186529 100644 --- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs +++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs @@ -17,6 +17,7 @@ using Flow.Launcher.Plugin.SharedModels; using Flow.Launcher.ViewModel; using ModernWpf; using ThemeManagerForColorSchemeSwitch = ModernWpf.ThemeManager; +using System.Windows.Controls; namespace Flow.Launcher.SettingPages.ViewModels; @@ -508,5 +509,56 @@ public partial class SettingsPaneThemeViewModel : BaseModel WindowHeightSize = 42; ItemHeightSize = 58; } - + + [RelayCommand] + private void Import() + { + var resourceDictionary = _theme.GetCurrentResourceDictionary(); + + if (resourceDictionary["QueryBoxStyle"] is Style queryBoxStyle) + { + var fontSizeSetter = queryBoxStyle.Setters + .OfType() + .FirstOrDefault(setter => setter.Property == TextBox.FontSizeProperty); + if (fontSizeSetter?.Value is double fontSize) + { + QueryBoxFontSize = fontSize; + } + + var heightSetter = queryBoxStyle.Setters + .OfType() + .FirstOrDefault(setter => setter.Property == FrameworkElement.HeightProperty); + if (heightSetter?.Value is double height) + { + WindowHeightSize = height; + } + } + + if (resourceDictionary["ResultItemHeight"] is double resultItemHeight) + { + ItemHeightSize = resultItemHeight; + } + + if (resourceDictionary["ItemTitleStyle"] is Style itemTitleStyle) + { + var fontSizeSetter = itemTitleStyle.Setters + .OfType() + .FirstOrDefault(setter => setter.Property == TextBlock.FontSizeProperty); + if (fontSizeSetter?.Value is double fontSize) + { + ResultItemFontSize = fontSize; + } + } + + if (resourceDictionary["ItemSubTitleStyle"] is Style itemSubTitleStyle) + { + var fontSizeSetter = itemSubTitleStyle.Setters + .OfType() + .FirstOrDefault(setter => setter.Property == TextBlock.FontSizeProperty); + if (fontSizeSetter?.Value is double fontSize) + { + ResultSubItemFontSize = fontSize; + } + } + } } diff --git a/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml index 1e01354b7..b08d92a69 100644 --- a/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml +++ b/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml @@ -256,10 +256,17 @@ BorderThickness="1" Style="{StaticResource SettingSeparatorStyle}" />