From 3a90b3beb65270b7c51ef865be892b035d8979f3 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Fri, 29 Mar 2019 21:23:34 -0400 Subject: [PATCH] theme manager --- src/App/App.xaml.cs | 18 ++---------------- src/App/Utilities/ThemeManager.cs | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 16 deletions(-) create mode 100644 src/App/Utilities/ThemeManager.cs diff --git a/src/App/App.xaml.cs b/src/App/App.xaml.cs index 4ee26492a..69550ff96 100644 --- a/src/App/App.xaml.cs +++ b/src/App/App.xaml.cs @@ -1,4 +1,5 @@ using Bit.App.Pages; +using Bit.App.Utilities; using System; using System.Reflection; using Xamarin.Forms; @@ -14,22 +15,7 @@ namespace Bit.App { InitializeComponent(); - // TODO: Load theme? - if(false) - { -#pragma warning disable CS0162 // Unreachable code detected - Resources.Add( -#pragma warning restore CS0162 // Unreachable code detected - StyleSheet.FromAssemblyResource(IntrospectionExtensions.GetTypeInfo(typeof(App)).Assembly, - "Bit.App.Css.dark.css")); - } - Resources.Add( - StyleSheet.FromAssemblyResource(IntrospectionExtensions.GetTypeInfo(typeof(App)).Assembly, - "Bit.App.Css.styles.css")); - Resources.Add( - StyleSheet.FromAssemblyResource(IntrospectionExtensions.GetTypeInfo(typeof(App)).Assembly, - $"Bit.App.Css.{Device.RuntimePlatform.ToLowerInvariant()}.css")); - + ThemeManager.SetTheme("dark"); MainPage = new TabsPage(); } diff --git a/src/App/Utilities/ThemeManager.cs b/src/App/Utilities/ThemeManager.cs new file mode 100644 index 000000000..26bb30242 --- /dev/null +++ b/src/App/Utilities/ThemeManager.cs @@ -0,0 +1,25 @@ +using System.Reflection; +using Xamarin.Forms; +using Xamarin.Forms.StyleSheets; + +namespace Bit.App.Utilities +{ + public static class ThemeManager + { + public static void SetTheme(string name) + { + var themeFormat = "Bit.App.Css.{0}.css"; + var assembly = IntrospectionExtensions.GetTypeInfo(typeof(App)).Assembly; + // Other supported theme names can be added here. + if(name == "dark") + { + Application.Current.Resources.Add(StyleSheet.FromAssemblyResource(assembly, + string.Format(themeFormat, name))); + } + Application.Current.Resources.Add(StyleSheet.FromAssemblyResource(assembly, + string.Format(themeFormat, Device.RuntimePlatform.ToLowerInvariant()))); + Application.Current.Resources.Add(StyleSheet.FromAssemblyResource(assembly, + string.Format(themeFormat, "styles"))); + } + } +}