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"))); + } + } +}