/// <summary> /// Initializes a new instance of the <see cref="MainViewModel"/> class. /// </summary> public MainViewModel() { _manager = SettingsManager.Instance; _manager.Initialize(SettingsManager.SettingsInitialization.IncludeDisplayConfiguration); _displayConfiguration = _manager.GetSettingsDisplayConfiguration(); _sections = new Dictionary<string, SectionViewModel>(); foreach (SettingDescriptor descriptor in _manager) { SectionViewModel svm = null; if (!_sections.TryGetValue(descriptor.Identifier, out svm)) { svm = new SectionViewModel(_displayConfiguration.GetIdentifier(descriptor.Identifier)); svm.Identifier = descriptor.Identifier; _sections.Add(svm.Identifier, svm); } SettingInfo setting = _displayConfiguration.GetSetting(descriptor.Identifier, descriptor.SettingItem.Name); if (setting == null) { Logger.Instance.LogFormat(LogType.Warning, this, Properties.Resources.SettingNotFoundInDisplayConfiguration, descriptor.SettingItem.Name, descriptor.Identifier); continue; } svm.Add(descriptor, setting); } // TODO: Sort the list afterwards }
/// <summary> /// Initializes a new instance of the <see cref="MainViewModel"/> class. /// </summary> public MainViewModel() { _manager = SettingsManager.Instance; _manager.Initialize(SettingsManager.SettingsInitialization.IncludeDisplayConfiguration); _displayConfiguration = _manager.GetSettingsDisplayConfiguration(); BuildSectionsTree(); _serviceStatePollingTimer = new Timer(2000d); _serviceStatePollingTimer.Elapsed += _serviceStatePollingTimer_Elapsed; _serviceStatePollingTimer.Start(); }
private void LoadSettingsDisplayConfiguration(IList <string> assemblyFiles) { SettingsDisplayConfiguration config = new SettingsDisplayConfiguration(); foreach (string assemblyFile in assemblyFiles) { string assemblyLocation = null; try { Assembly assembly = Assembly.LoadFile(assemblyFile); assemblyLocation = assembly.Location; // Try to locate and load the embedded resource file string embResText = assembly.GetEmbeddedResourceText(SettingsDisplayConfiguration.EmbeddedResourceFileName); // If the assembly has no such settings configuration, skip further processing. if (string.IsNullOrWhiteSpace(embResText)) { continue; } XDocument doc = XDocument.Parse(embResText); config.ParseAdd(doc); Logger.Instance.LogFormat(LogType.Debug, this, Properties.Resources.SettingsDisplayConfigurationEmbResLoaded, assemblyLocation); } catch (XmlException ex) { Logger.Instance.LogFormat(LogType.Warning, this, Properties.Resources.SettingsDisplayConfigurationEmbResLoaded, assemblyLocation, ex.Message); } catch (BadImageFormatException) { // We can ignore this exception because it may occur with unmanaged dlls. } catch (Exception) { // Ignore parsing this file. Logger.Instance.LogFormat(LogType.Warning, null, "Could not parse settings-info file '{0}'. It either is no settings-info-file or it is in an invalid format.", assemblyLocation); } } // Done loading! _displayConfiguration = config; }
/// <summary> /// Invalidates all current settings (without saving them). /// When this method has finished, you need to call Initialize() again. /// </summary> public void Invalidate() { _displayConfiguration = null; _settings.Clear(); }