/// <summary> /// Attempts to retrieve a language option from the <seealso cref="Settingsmodel"/> and /// falls back to alternive default options if retrieval of option value fails. /// </summary> /// <param name="service"></param> /// <param name="OptGroup"></param> /// <param name="languageOptionName">The name of the option in the SettingsModel eg.: "SourceLanguage"</param> /// <param name="defaultLanguageOptionName">The name of the default option in the SettingsModel eg.: "DefaultSourceLanguage"</param> /// <param name="defaultLanguageListIndex">Index of default language in list of languages if everything else fails.</param> /// <returns></returns> private ILanguageCode GetLanguageOptionFromModel(ITranslator service, IOptionGroup OptGroup, string languageOptionName, string defaultLanguageOptionName, int defaultLanguageListIndex) { ILanguageCode ret = null; ret = service.LanguageList.SingleOrDefault( item => item.Bcp47_LangCode == OptGroup.GetValue <string>(languageOptionName)); // Select defaults if there was no data to be had if (ret == null) { ret = service.LanguageList.SingleOrDefault( item => item.Bcp47_LangCode == OptGroup.GetValue <string>(defaultLanguageOptionName)); } // Attach to first entry in language list if default source language is not set if (ret == null) { ret = service.LanguageList[defaultLanguageListIndex]; } return(ret); }
/// <summary> /// Reset the view model to those options that are going to be presented for editing. /// </summary> /// <param name="settingData"></param> private void LoadOptionsFromModel(IOptionGroup optGroup) { SecureString securePassword = optGroup.GetValue <SecureString>("MSTranslate.TranslationServicePassword"); SecureString secureUser = optGroup.GetValue <SecureString>("MSTranslate.TranslationServiceUser"); mReloadFilesOnAppStart = optGroup.GetValue <bool>("ReloadOpenFilesFromLastSession"); mMSTranslateService = new TranslationService ( optGroup.GetValue <string>("MSTranslate.TranslationServiceUri"), secureUser, securePassword ); var settings = GetService <ISettingsManager>(); // Initialize localization settings Languages = new List <LanguageCollection>(settings.GetSupportedLanguages()); // Set default language to make sure app neutral is selected and available for sure // (this is a fallback if all else fails) try { var langOpt = optGroup.GetValue <string>("LanguageSelected"); LanguageSelected = Languages.FirstOrDefault(lang => lang.BCP47 == langOpt); if (LanguageSelected == null) { LanguageSelected = Languages[0]; } } catch { } var service = GetService <ITranslator>(); DefaultSourceLanguageSelected = GetLanguageOptionFromModel(service, optGroup, "DefaultSourceLanguage", "DefaultSourceLanguage", 0); DefaultTargetLanguageSelected = GetLanguageOptionFromModel(service, optGroup, "DefaultTargetLanguage", "DefaultTargetLanguage", 1); // get copy of actual value and min, max value definitions from model into viewmodel IconSize = optGroup.GetValue <int>("DefaultIconSize"); IconSizeMax = settings.IconSizeMax; IconSizeMin = settings.IconSizeMin; ColorGridOption = optGroup.GetValue <bool>("ColorGridOption"); AlternatingColor = optGroup.GetValue <Color>("AlternatingGridColor"); }