public App() { Action sleepAction = () => WindowsSystemHelpers.PerformSleep(); Container.RegisterGlobalInstance <IDelayedActionService>(new DelayedActionService(sleepAction)); var programDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Sleeper"); Container.RegisterGlobalInstance <ISettingLoader>(new JsonSettingLoader(programDataPath)); Container.RegisterGlobalInstance <ISettingManager>(GetSettings()); Container.RegisterGlobalInstance <IAppSettingsContext>(new AppSettingsContext()); var logPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Sleeper"); LogLevel logLevel; if (!Enum.TryParse(Container.ResolveGlobalInstance <ISettingManager>().GetSettings()["logLevel"], out logLevel)) { logLevel = LogLevel.Warning; } Container.RegisterGlobalInstance <ILogger>(new JsonFileLogger(logPath, logLevel)); InitializeComponent(); var taskBarIcon = (TaskBarControl)FindResource("SystemTrayIcon"); var taskBarContext = Container.ResolveGlobalInstance <IAppSettingsContext>(); taskBarIcon.DataContext = taskBarContext; Container.RegisterGlobalInstance <ITaskBar>(new TaskBar(taskBarIcon, taskBarContext)); }
private SettingManager GetSettings() { var settingLoader = Container.ResolveGlobalInstance <ISettingLoader>(); var settingManager = new SettingManager(); settingManager.RegisterSettingMapping( "hibernateEnabled", new SettingMapping() { Load = () => { return(File.Exists(@"C:\hiberfil.sys").ToString()); }, Apply = (value) => { bool isSet; bool isAdmin; string isAdminValue = Container.ResolveGlobalInstance <ISettingManager>().GetSettings()["isAdmin"]; if (bool.TryParse(value, out isSet) && bool.TryParse(isAdminValue, out isAdmin) && isAdmin) { WindowsSystemHelpers.SetHibernate(isSet); } } } ); settingManager.RegisterSettingMapping( "isAdmin", new SettingMapping() { Load = () => { var identity = WindowsIdentity.GetCurrent(); var principal = new WindowsPrincipal(identity); return(principal.IsInRole(WindowsBuiltInRole.Administrator).ToString()); }, Apply = (value) => { } } ); settingManager.RegisterSettingMapping( "modernStandbyEnabled", new SettingMapping() { Load = () => { return(settingLoader.GetSetting("modernStandbyEnabled") ?? bool.FalseString); }, Apply = (value) => { settingLoader.ApplySetting("modernStandbyEnabled", value); } } ); settingManager.RegisterSettingMapping( "logLevel", new SettingMapping() { Load = () => { return(settingLoader.GetSetting("logLevel") ?? LogLevel.Warning.ToString()); }, Apply = (value) => { settingLoader.ApplySetting("logLevel", value); } } ); settingManager.GatherSettings(); return(settingManager); }