ImageSourceServiceProvider(IThemeService themeService, IBackgroundImageOptionDefinitionService backgroundImageOptionDefinitionService, IBackgroundImageSettingsService backgroundImageSettingsService)
 {
     this.themeService = themeService;
     this.backgroundImageOptionDefinitionService = backgroundImageOptionDefinitionService;
     this.backgroundImageSettingsService         = backgroundImageSettingsService;
     imageSourceServices = new Dictionary <IBackgroundImageOptionDefinition, IImageSourceService>();
 }
		BackgroundImageSettingsService(ISettingsService settingsService, IBackgroundImageOptionDefinitionService backgroundImageOptionDefinitionService) {
			this.settingsService = settingsService;
			settingsInfos = new Dictionary<string, SettingsInfo>(backgroundImageOptionDefinitionService.AllSettings.Length, StringComparer.Ordinal);

			foreach (var lazy in backgroundImageOptionDefinitionService.AllSettings) {
				if (settingsInfos.ContainsKey(lazy.Value.Id))
					continue;
				settingsInfos[lazy.Value.Id] = new SettingsInfo(lazy);
			}

			var allSettingsIds = new HashSet<string>(backgroundImageOptionDefinitionService.AllSettings.Select(a => a.Value.Id), StringComparer.Ordinal);
			var rootSection = settingsService.GetOrCreateSection(SETTINGS_GUID);
			foreach (var section in rootSection.SectionsWithName(SettingsName)) {
				var rawSettings = new RawSettings(section);
				if (!rawSettings.IsValid)
					continue;
				SettingsInfo info;
				if (!settingsInfos.TryGetValue(rawSettings.Id, out info))
					continue;
				if (!allSettingsIds.Contains(rawSettings.Id))
					continue;
				allSettingsIds.Remove(rawSettings.Id);
				if (info.Lazy.Value.UserVisible) {
					info.SettingsSection = section;
					info.RawSettings.CopyFrom(rawSettings);
				}
			}
		}
        BackgroundImageSettingsService(ISettingsService settingsService, IBackgroundImageOptionDefinitionService backgroundImageOptionDefinitionService)
        {
            this.settingsService = settingsService;
            settingsInfos        = new Dictionary <string, SettingsInfo>(backgroundImageOptionDefinitionService.AllSettings.Length, StringComparer.Ordinal);

            foreach (var lazy in backgroundImageOptionDefinitionService.AllSettings)
            {
                if (settingsInfos.ContainsKey(lazy.Value.Id))
                {
                    continue;
                }
                settingsInfos[lazy.Value.Id] = new SettingsInfo(lazy);
            }

            var allSettingsIds = new HashSet <string>(backgroundImageOptionDefinitionService.AllSettings.Select(a => a.Value.Id), StringComparer.Ordinal);
            var rootSection    = settingsService.GetOrCreateSection(SETTINGS_GUID);

            foreach (var section in rootSection.SectionsWithName(SettingsName))
            {
                var rawSettings = new RawSettings(section);
                if (!rawSettings.IsValid)
                {
                    continue;
                }
                Debug2.Assert(rawSettings.Id is not null);
                if (!settingsInfos.TryGetValue(rawSettings.Id, out var info))
                {
                    continue;
                }
                if (!allSettingsIds.Contains(rawSettings.Id))
                {
                    continue;
                }
                allSettingsIds.Remove(rawSettings.Id);
                if (info.Lazy.Value.UserVisible)
                {
                    info.SettingsSection = section;
                    info.RawSettings.CopyFrom(rawSettings);
                }
            }
        }
		ImageSourceServiceProvider(IThemeService themeService, IBackgroundImageOptionDefinitionService backgroundImageOptionDefinitionService, IBackgroundImageSettingsService backgroundImageSettingsService) {
			this.themeService = themeService;
			this.backgroundImageOptionDefinitionService = backgroundImageOptionDefinitionService;
			this.backgroundImageSettingsService = backgroundImageSettingsService;
			imageSourceServices = new Dictionary<IBackgroundImageOptionDefinition, IImageSourceService>();
		}