// Called when radio button is selected public async void OnSelected(object sender, SelectedEventArgs args) { Console.WriteLine($"Radio.OnSoundSelected!! value:{args.Value}"); Radio radio = sender as Radio; if (Application.Current.MainPage.Navigation.NavigationStack.Count > 0) { int index = Application.Current.MainPage.Navigation.NavigationStack.Count - 1; LanguageSelectionPage currPage = Application.Current.MainPage.Navigation.NavigationStack[index] as LanguageSelectionPage; //Error CS0023 Operator '!' cannot be applied to operand of type 'string' if (args.Value != null) { Console.WriteLine(" < UNSELECTED > XXXXXX sender " + sender + " - " + radio.Value); currPage.ignoreRadioSelection = false; return; } else { if (currPage.ignoreRadioSelection) { Console.WriteLine("\n\nRadio_Selected >>>>>>> SKIP!\n\n"); currPage.ignoreRadioSelection = false; return; } Console.WriteLine(" < SELECTED > XXXXXX sender " + sender + " - " + radio.Value); SttLanguage item = radio.BindingContext as SttLanguage; ((MainPageModel)currPage.BindingContext).CurrentLanguage = item.Lang; ((MainPageModel)currPage.BindingContext).SelectedItemIndex = item; await currPage.Navigation.PopToRootAsync(); } } }
void GetSttService() { if (_SttService == null) { Console.WriteLine(" GetSttService() ------------1- CurrentLanguage : " + CurrentLanguage); _SttService = DependencyService.Get <ISpeechToTextService>(DependencyFetchTarget.GlobalInstance); Languages = new ObservableCollection <SttLanguage>(); // TODO: how to check if the current language is supported by STT engine. //CultureInfo _cultureInfo = new CultureInfo(CurrentLanguage); //RegionInfo _regionInfo = new RegionInfo(CurrentLanguage.Replace("_", "-")); //Languages.Add(new SttLanguage(CurrentLanguage, "Automatic", Regex.Replace(_cultureInfo.DisplayName, @"\t|\n|\r", ""))); _AppDataService = DependencyService.Get <IAppDataService>(); var dafaultLang = "en_US"; // Restore the selected language for STT or use the STT service's current language if (_AppDataService.Contain(LANGUAGE_FOR_STT)) { dafaultLang = _AppDataService.GetValue(LANGUAGE_FOR_STT); Console.WriteLine(" IAppDataService.GetValue => language for stt : " + dafaultLang); } else { dafaultLang = _SttService.CurrentSttLanguage; Console.WriteLine(" IAppDataService no value => CurrentSttLanguage : " + dafaultLang); } // For updating STT service's CurrentSttLanguage CurrentLanguage = dafaultLang; foreach (var lang in _SttService.GetInstalledLanguages()) { CultureInfo cultureInfo = new CultureInfo(lang); RegionInfo regionInfo = new RegionInfo(lang.Replace("_", "-")); //Console.WriteLine(" [GetSttService] lang : " + lang + ", " + cultureInfo.DisplayName + ", " + regionInfo.EnglishName); var stt = new SttLanguage(lang, cultureInfo.DisplayName, regionInfo.EnglishName); Languages.Add(stt); //Languages.Add(new SttLanguage(lang, cultureInfo.DisplayName, regionInfo.EnglishName)); if (lang == dafaultLang) { stt.IsOn = true; SelectedItemIndex = stt; } } #if ENABLE_DEBUG_PRINT foreach (var lang in Languages) { Console.WriteLine(" Languages -- " + lang.Country + ", " + lang.Name + ", " + lang.IsOn); /*+ " vs. " + lang.isNotOn*/ } #endif Console.WriteLine(" GetSttService() ------------2- " + _SttService.GetHashCode()); } }
/// <summary> /// Invoked when an item is tapped /// </summary> /// <param name="sender">object</param> /// <param name="args">ItemTappedEventArgs</param> void OnItemTapped(object sender, ItemTappedEventArgs args) { ignoreRadioSelection = false; ViewModel.CurrentLanguage = ((SttLanguage)args.Item).Lang; SttLanguage item = args.Item as SttLanguage; for (int i = 0; i < ((MainPageModel)BindingContext).Languages.Count; i++) { if (((MainPageModel)BindingContext).Languages[i].Combo == item.Combo) { Console.WriteLine("OnItemTapped : *" + i + " ) FOUND!! IsOn will be true! "); // The following code makes the Radio button of SttLanguageViewCell is selected. ((MainPageModel)BindingContext).Languages[i].IsOn = true; } } }