mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Add BackdropType in setting
This commit is contained in:
parent
1345470683
commit
7e622b7353
3 changed files with 79 additions and 0 deletions
|
|
@ -76,6 +76,8 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
|||
}
|
||||
public bool UseDropShadowEffect { get; set; } = true;
|
||||
|
||||
public BackdropTypes BackdropType{ get; set; } = BackdropTypes.None;
|
||||
|
||||
/* Appearance Settings. It should be separated from the setting later.*/
|
||||
public double WindowHeightSize { get; set; } = 42;
|
||||
public double ItemHeightSize { get; set; } = 58;
|
||||
|
|
@ -426,4 +428,12 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
|||
Fast,
|
||||
Custom
|
||||
}
|
||||
|
||||
public enum BackdropTypes
|
||||
{
|
||||
None,
|
||||
Acrylic,
|
||||
Mica,
|
||||
MicaAlt
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ using Flow.Launcher.ViewModel;
|
|||
using ModernWpf;
|
||||
using ThemeManager = Flow.Launcher.Core.Resource.ThemeManager;
|
||||
using ThemeManagerForColorSchemeSwitch = ModernWpf.ThemeManager;
|
||||
using static Flow.Launcher.Core.Resource.Theme;
|
||||
using System.Windows.Interop;
|
||||
|
||||
namespace Flow.Launcher.SettingPages.ViewModels;
|
||||
|
||||
|
|
@ -177,6 +179,54 @@ public partial class SettingsPaneThemeViewModel : BaseModel
|
|||
public class AnimationSpeedData : DropdownDataGeneric<AnimationSpeeds> { }
|
||||
public List<AnimationSpeedData> AnimationSpeeds { get; } = DropdownDataGeneric<AnimationSpeeds>.GetValues<AnimationSpeedData>("AnimationSpeed");
|
||||
|
||||
public class BackdropTypeData : DropdownDataGeneric<BackdropTypes>
|
||||
{
|
||||
public void ApplyBackdrop()
|
||||
{
|
||||
IntPtr hWnd = new WindowInteropHelper(Application.Current.MainWindow).Handle;
|
||||
if (hWnd == IntPtr.Zero)
|
||||
return;
|
||||
|
||||
int backdropValue = Value switch
|
||||
{
|
||||
BackdropTypes.Acrylic => 3, // ✅ Acrylic (DWM_SYSTEMBACKDROP_TYPE = 3)
|
||||
BackdropTypes.Mica => 2, // ✅ Mica (DWM_SYSTEMBACKDROP_TYPE = 2)
|
||||
BackdropTypes.MicaAlt => 4, // ✅ MicaAlt (DWM_SYSTEMBACKDROP_TYPE = 4)
|
||||
_ => 0 // ✅ None (DWM_SYSTEMBACKDROP_TYPE = 0)
|
||||
};
|
||||
|
||||
Methods.SetWindowAttribute(hWnd, ParameterTypes.DWMWINDOWATTRIBUTE.DWMWA_SYSTEMBACKDROP_TYPE, backdropValue);
|
||||
}
|
||||
}
|
||||
|
||||
// ✅ BackdropTypeData 리스트 (Dropdown과 연동)
|
||||
public List<BackdropTypeData> BackdropTypesList { get; } =
|
||||
DropdownDataGeneric<BackdropTypes>.GetValues<BackdropTypeData>("BackdropTypes");
|
||||
|
||||
// ✅ BackdropType 속성 (값 저장 + 자동 적용)
|
||||
public BackdropTypes BackdropType
|
||||
{
|
||||
get => Enum.IsDefined(typeof(BackdropTypes), Settings.BackdropType)
|
||||
? (BackdropTypes)Settings.BackdropType
|
||||
: BackdropTypes.None;
|
||||
|
||||
set
|
||||
{
|
||||
if (!Enum.IsDefined(typeof(BackdropTypes), value))
|
||||
{
|
||||
value = BackdropTypes.None;
|
||||
}
|
||||
|
||||
Settings.BackdropType = value;
|
||||
|
||||
// ✅ BackdropTypeData 리스트에서 해당하는 값 찾기
|
||||
var backdropData = BackdropTypesList.FirstOrDefault(b => b.Value == value);
|
||||
backdropData?.ApplyBackdrop();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public bool UseSound
|
||||
{
|
||||
get => Settings.UseSound;
|
||||
|
|
|
|||
|
|
@ -370,6 +370,25 @@
|
|||
</DockPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
<!-- Drop shadow effect -->
|
||||
<cc:Card
|
||||
Title="Backdrop Type"
|
||||
Margin="0 8 0 0"
|
||||
Icon=""
|
||||
Sub="{DynamicResource shadowEffectRestart}">
|
||||
|
||||
<ComboBox
|
||||
MinWidth="160"
|
||||
VerticalAlignment="Center"
|
||||
DisplayMemberPath="Display"
|
||||
FontSize="14"
|
||||
ItemsSource="{Binding BackdropTypesList}"
|
||||
SelectedValue="{Binding BackdropType, Mode=TwoWay}"
|
||||
SelectedValuePath="Value" />
|
||||
</cc:Card>
|
||||
|
||||
|
||||
<!-- Drop shadow effect -->
|
||||
<cc:Card
|
||||
Title="{DynamicResource queryWindowShadowEffect}"
|
||||
|
|
|
|||
Loading…
Reference in a new issue