mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
revise theme structure to achieve the property update
This commit is contained in:
parent
f109fb8a3c
commit
4a0891cac7
2 changed files with 19 additions and 12 deletions
|
|
@ -82,13 +82,14 @@ namespace Flow.Launcher.Core.Resource
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(path))
|
if (string.IsNullOrEmpty(path))
|
||||||
throw new DirectoryNotFoundException("Theme path can't be found <{path}>");
|
throw new DirectoryNotFoundException("Theme path can't be found <{path}>");
|
||||||
|
|
||||||
Settings.Theme = theme;
|
|
||||||
|
|
||||||
// reload all resources even if the theme itself hasn't changed in order to pickup changes
|
// reload all resources even if the theme itself hasn't changed in order to pickup changes
|
||||||
// to things like fonts
|
// to things like fonts
|
||||||
UpdateResourceDictionary(GetResourceDictionary());
|
UpdateResourceDictionary(GetResourceDictionary(theme));
|
||||||
|
|
||||||
|
Settings.Theme = theme;
|
||||||
|
|
||||||
|
|
||||||
//always allow re-loading default theme, in case of failure of switching to a new theme from default theme
|
//always allow re-loading default theme, in case of failure of switching to a new theme from default theme
|
||||||
if (_oldTheme != theme || theme == defaultTheme)
|
if (_oldTheme != theme || theme == defaultTheme)
|
||||||
{
|
{
|
||||||
|
|
@ -134,9 +135,9 @@ namespace Flow.Launcher.Core.Resource
|
||||||
_oldResource = dictionaryToUpdate;
|
_oldResource = dictionaryToUpdate;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ResourceDictionary CurrentThemeResourceDictionary()
|
private ResourceDictionary GetThemeResourceDictionary(string theme)
|
||||||
{
|
{
|
||||||
var uri = GetThemePath(Settings.Theme);
|
var uri = GetThemePath(theme);
|
||||||
var dict = new ResourceDictionary
|
var dict = new ResourceDictionary
|
||||||
{
|
{
|
||||||
Source = new Uri(uri, UriKind.Absolute)
|
Source = new Uri(uri, UriKind.Absolute)
|
||||||
|
|
@ -145,10 +146,12 @@ namespace Flow.Launcher.Core.Resource
|
||||||
return dict;
|
return dict;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResourceDictionary GetResourceDictionary()
|
private ResourceDictionary CurrentThemeResourceDictionary() => GetThemeResourceDictionary(Settings.Theme);
|
||||||
|
|
||||||
|
public ResourceDictionary GetResourceDictionary(string theme)
|
||||||
{
|
{
|
||||||
var dict = CurrentThemeResourceDictionary();
|
var dict = GetThemeResourceDictionary(theme);
|
||||||
|
|
||||||
if (dict["QueryBoxStyle"] is Style queryBoxStyle &&
|
if (dict["QueryBoxStyle"] is Style queryBoxStyle &&
|
||||||
dict["QuerySuggestionBoxStyle"] is Style querySuggestionBoxStyle)
|
dict["QuerySuggestionBoxStyle"] is Style querySuggestionBoxStyle)
|
||||||
{
|
{
|
||||||
|
|
@ -200,6 +203,11 @@ namespace Flow.Launcher.Core.Resource
|
||||||
return dict;
|
return dict;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ResourceDictionary GetCurrentResourceDictionary( )
|
||||||
|
{
|
||||||
|
return GetResourceDictionary(Settings.Theme);
|
||||||
|
}
|
||||||
|
|
||||||
public List<string> LoadAvailableThemes()
|
public List<string> LoadAvailableThemes()
|
||||||
{
|
{
|
||||||
List<string> themes = new List<string>();
|
List<string> themes = new List<string>();
|
||||||
|
|
@ -229,7 +237,7 @@ namespace Flow.Launcher.Core.Resource
|
||||||
|
|
||||||
public void AddDropShadowEffectToCurrentTheme()
|
public void AddDropShadowEffectToCurrentTheme()
|
||||||
{
|
{
|
||||||
var dict = GetResourceDictionary();
|
var dict = GetCurrentResourceDictionary();
|
||||||
|
|
||||||
var windowBorderStyle = dict["WindowBorderStyle"] as Style;
|
var windowBorderStyle = dict["WindowBorderStyle"] as Style;
|
||||||
|
|
||||||
|
|
@ -273,7 +281,7 @@ namespace Flow.Launcher.Core.Resource
|
||||||
|
|
||||||
public void RemoveDropShadowEffectFromCurrentTheme()
|
public void RemoveDropShadowEffectFromCurrentTheme()
|
||||||
{
|
{
|
||||||
var dict = CurrentThemeResourceDictionary();
|
var dict = GetCurrentResourceDictionary();
|
||||||
var windowBorderStyle = dict["WindowBorderStyle"] as Style;
|
var windowBorderStyle = dict["WindowBorderStyle"] as Style;
|
||||||
|
|
||||||
var effectSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.EffectProperty) as Setter;
|
var effectSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.EffectProperty) as Setter;
|
||||||
|
|
|
||||||
|
|
@ -407,7 +407,6 @@ namespace Flow.Launcher.ViewModel
|
||||||
get { return Settings.Theme; }
|
get { return Settings.Theme; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
Settings.Theme = value;
|
|
||||||
ThemeManager.Instance.ChangeTheme(value);
|
ThemeManager.Instance.ChangeTheme(value);
|
||||||
|
|
||||||
if (ThemeManager.Instance.BlurEnabled && Settings.UseDropShadowEffect)
|
if (ThemeManager.Instance.BlurEnabled && Settings.UseDropShadowEffect)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue