Flow.Launcher/Flow.Launcher.Avalonia/Views/SettingPages/ThemeSettingsPage.axaml
Hongtao Zhang 0f9b9329dd Add hotkey recorder with manual modifier tracking
- Add HotkeyRecorderDialog with global keyboard hook for capturing hotkeys
- Implement manual modifier state tracking to handle swallowed key events
- Add HotkeyControl button that opens the recorder dialog
- Add CheckAvailability and RemoveToggleHotkey to HotKeyMapper
- Expose GetKeyFromVk helper in GlobalHotkey infrastructure
- Add Settings pages (General, Plugin, Theme, Proxy, About)
- Add PreviewPanel for result previews in main window
- Fix hook reuse issue by clearing callback on close instead of disposing
2026-01-18 02:10:53 -08:00

66 lines
3.1 KiB
XML

<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="using:FluentAvalonia.UI.Controls"
xmlns:vm="using:Flow.Launcher.Avalonia.ViewModel.SettingPages"
xmlns:i18n="using:Flow.Launcher.Avalonia.Resource"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="600"
x:Class="Flow.Launcher.Avalonia.Views.SettingPages.ThemeSettingsPage"
x:DataType="vm:ThemeSettingsViewModel">
<StackPanel Spacing="20">
<TextBlock Text="{i18n:Localize appearance}" FontSize="28" FontWeight="SemiBold" />
<!-- Theme Selection -->
<ui:SettingsExpander Header="{i18n:Localize theme}"
IconSource="DarkTheme">
<ui:SettingsExpander.Footer>
<ComboBox ItemsSource="{Binding ThemeVariants}"
SelectedItem="{Binding SelectedThemeVariant}"
MinWidth="150" />
</ui:SettingsExpander.Footer>
</ui:SettingsExpander>
<!-- Glyph Icons -->
<ui:SettingsExpander Header="{i18n:Localize useGlyphUI}"
Description="{i18n:Localize useGlyphUIEffect}"
IconSource="Font">
<ui:SettingsExpander.Footer>
<ToggleSwitch IsChecked="{Binding UseGlyphIcons}" />
</ui:SettingsExpander.Footer>
</ui:SettingsExpander>
<!-- Max Results -->
<ui:SettingsExpander Header="{i18n:Localize maxShowResults}"
IconSource="List">
<ui:SettingsExpander.Footer>
<ComboBox ItemsSource="{Binding MaxResultsRange}"
SelectedItem="{Binding MaxResults}"
MinWidth="100" />
</ui:SettingsExpander.Footer>
</ui:SettingsExpander>
<!-- Font Sizes -->
<ui:SettingsExpander Header="{i18n:Localize queryBoxFont}"
IconSource="FontSize">
<ui:SettingsExpander.Footer>
<StackPanel Orientation="Horizontal" Spacing="10">
<TextBlock Text="{Binding QueryBoxFontSize}" VerticalAlignment="Center" Width="30" />
<Slider Minimum="10" Maximum="60" Value="{Binding QueryBoxFontSize}" Width="200" />
</StackPanel>
</ui:SettingsExpander.Footer>
</ui:SettingsExpander>
<ui:SettingsExpander Header="{i18n:Localize resultItemFont}"
IconSource="FontSize">
<ui:SettingsExpander.Footer>
<StackPanel Orientation="Horizontal" Spacing="10">
<TextBlock Text="{Binding ResultItemFontSize}" VerticalAlignment="Center" Width="30" />
<Slider Minimum="8" Maximum="40" Value="{Binding ResultItemFontSize}" Width="200" />
</StackPanel>
</ui:SettingsExpander.Footer>
</ui:SettingsExpander>
</StackPanel>
</UserControl>