theme manager

This commit is contained in:
Kyle Spearrin 2019-03-29 21:23:34 -04:00
parent fe52324eea
commit 3a90b3beb6
2 changed files with 27 additions and 16 deletions

View File

@ -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();
}

View File

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