void UpdateExplanation(ToneOfYinjie tone) { int yinjieIndex = mYinjieExplanations.FindYinjie(mYinjie.GetString()); //string exp = ""; FormattedString fs = new FormattedString(); if (yinjieIndex >= 0) { string samples = ""; if (tone == ToneOfYinjie.TONE_1) { samples = mYinjieExplanations.AllYinjies[yinjieIndex].Tone1Samples; } else if (tone == ToneOfYinjie.TONE_2) { samples = mYinjieExplanations.AllYinjies[yinjieIndex].Tone2Samples; } else if (tone == ToneOfYinjie.TONE_3) { samples = mYinjieExplanations.AllYinjies[yinjieIndex].Tone3Samples; } else if (tone == ToneOfYinjie.TONE_4) { samples = mYinjieExplanations.AllYinjies[yinjieIndex].Tone4Samples; } //exp = string.Format(" {0}\r\n {1}", mYinjieExplanations.AllYinjies[yinjieIndex].Desc, samples); fs.Spans.Add(new Span { Text = mYinjieExplanations.AllYinjies[yinjieIndex].Desc + "\n", ForegroundColor = Color.FromHex("#E8AD00") }); fs.Spans.Add(new Span { Text = samples }); btnClearYinjie.IsEnabled = true; } else { //exp = string.Format(" {0}\n {1}", DefaultTip1, DefaultTip2); fs.Spans.Add(new Span { Text = DefaultTip1 + "\n", ForegroundColor = Color.FromHex("#E8AD00") }); fs.Spans.Add(new Span { Text = DefaultTip2 }); btnClearYinjie.IsEnabled = false; } //lblExplanation.Text = exp; lblExplanation.FormattedText = fs; }
//void InitializeYunmu() //{ // mAllYunmus = new List<Yunmu>(24); // Yunmu ymA = new Yunmu("a", btnYunmuA, false); // mAllYunmus.Add(ymA); // Yunmu ymO = new Yunmu("o", btnYunmuO, false); // mAllYunmus.Add(ymO); // Yunmu ymE = new Yunmu("e", btnYunmuE, false); // mAllYunmus.Add(ymE); // Yunmu ymI = new Yunmu("i", btnYunmuI, true); // mAllYunmus.Add(ymI); // Yunmu ymU = new Yunmu("u", btnYunmuU, true); // mAllYunmus.Add(ymU); // Yunmu ymV = new Yunmu("ü", btnYunmuV, true); // mAllYunmus.Add(ymV); // Yunmu ymAI = new Yunmu("ai", btnYunmuAI, false); // mAllYunmus.Add(ymAI); // Yunmu ymEI = new Yunmu("ei", btnYunmuEI, false); // mAllYunmus.Add(ymEI); // Yunmu ymUI = new Yunmu("ui", btnYunmuUI, true); // mAllYunmus.Add(ymUI); // Yunmu ymAO = new Yunmu("ao", btnYunmuAO, false); // mAllYunmus.Add(ymAO); // Yunmu ymOU = new Yunmu("ou", btnYunmuOU, false); // mAllYunmus.Add(ymOU); // Yunmu ymIU = new Yunmu("iu", btnYunmuIU, true); // mAllYunmus.Add(ymIU); // Yunmu ymIE = new Yunmu("ie", btnYunmuIE, true); // mAllYunmus.Add(ymIE); // Yunmu ymVE = new Yunmu("üe", btnYunmuVE, true); // mAllYunmus.Add(ymVE); // Yunmu ymER = new Yunmu("er", btnYunmuER, false); // mAllYunmus.Add(ymER); // Yunmu ymAN = new Yunmu("an", btnYunmuAN, false); // mAllYunmus.Add(ymAN); // Yunmu ymEN = new Yunmu("en", btnYunmuEN, false); // mAllYunmus.Add(ymEN); // Yunmu ymIN = new Yunmu("in", btnYunmuIN, true); // mAllYunmus.Add(ymIN); // Yunmu ymUN = new Yunmu("un", btnYunmuUN, true); // mAllYunmus.Add(ymUN); // Yunmu ymVN = new Yunmu("ün", btnYunmuVN, true); // mAllYunmus.Add(ymVN); // Yunmu ymANG = new Yunmu("ang", btnYunmuANG, false); // mAllYunmus.Add(ymANG); // Yunmu ymENG = new Yunmu("eng", btnYunmuENG, false); // mAllYunmus.Add(ymENG); // Yunmu ymING = new Yunmu("ing", btnYunmuING, true); // mAllYunmus.Add(ymING); // Yunmu ymONG = new Yunmu("ong", btnYunmuONG, true); // mAllYunmus.Add(ymONG); //} void UpdateExplanation(ToneOfYinjie tone) { YinjieXmlFile pinyinData = PinyinDataManager.Instance.GetAllYinjies(); int yinjieIndex = pinyinData.FindYinjie(mYinjie.GetString()); FormattedString fs = new FormattedString(); if (yinjieIndex >= 0) { string samples = ""; if (tone == ToneOfYinjie.TONE_1) { samples = pinyinData.AllYinjies[yinjieIndex].Tone1Samples; } else if (tone == ToneOfYinjie.TONE_2) { samples = pinyinData.AllYinjies[yinjieIndex].Tone2Samples; } else if (tone == ToneOfYinjie.TONE_3) { samples = pinyinData.AllYinjies[yinjieIndex].Tone3Samples; } else if (tone == ToneOfYinjie.TONE_4) { samples = pinyinData.AllYinjies[yinjieIndex].Tone4Samples; } else { samples = ""; } fs.Spans.Add(new Span { Text = pinyinData.AllYinjies[yinjieIndex].Desc + "\n", ForegroundColor = Color.FromHex("#E8AD00") }); if (mYinjie.ToneRule != Yinjie.ToneRuleEnum.TONERULE_NONE) { fs.Spans.Add(new Span { Text = string.Format("声调规则: {0}\n", mYinjie.ToneRules[(int)mYinjie.ToneRule]), ForegroundColor = Color.LimeGreen }); } fs.Spans.Add(new Span { Text = samples }); } else { fs.Spans.Add(new Span { Text = DefaultTip1 + "\n", ForegroundColor = Color.FromHex("#E8AD00") }); } lblExplanation.FormattedText = fs; }
void PlayYinjie(ToneOfYinjie tone) { string soundFile = ""; if (mYinjie.Yunmu.Length > 0) { int toneInt = (int)tone; // Xamarin doesn't support adding assets with ü in name, // so have to replace it with v string yinjieWithV = mYinjie.Yunmu.Replace("ü", "v"); soundFile = string.Format("{0}{1}.MP3", yinjieWithV, toneInt); } AudioManager.Instance.PlaySound(soundFile); }
void PlayYinjie(ToneOfYinjie tone) { string soundFile = ""; // if user just chooses shengmu, then no tones are available // yunmu and full yinjie has tones if (mYinjie.Shengmu.Length > 0 && mYinjie.Yunmu.Length == 0) { soundFile = string.Format("{0}.MP3", mYinjie.Shengmu); } else { int toneInt = (int)tone; // Xamarin doesn't support adding assets with ü in name, // so have to replace it with v string yinjieWithV = mYinjie.GetString().Replace("ü", "v"); soundFile = string.Format("{0}{1}.MP3", yinjieWithV, toneInt); } AudioManager.Instance.PlaySound(soundFile); // AudioManager.Instance.PlayBackgroundMusic(soundFile); }
void UpdateYinjie(ToneOfYinjie tone) { lblYinjie.FormattedText = mYinjie.GetFormattedTonedString(tone, Color.FromHex("#E8AD00"), Color.LimeGreen, Color.FromHex("#E8AD00")); }
//public string GetTonedString(ToneOfYinjie tone) //{ // string ym = ""; // int t = (int)tone; // if (mYunmu.Contains("a")) // { // ym = mYunmu.Replace('a', TonedA[t]); // mToneRule = ToneRuleEnum.TONERULE_A; // } // else if (mYunmu.Contains("o")) // { // ym = mYunmu.Replace('o', TonedO[t]); // mToneRule = ToneRuleEnum.TONERULE_O; // } // else if (mYunmu.Contains("e")) // { // ym = mYunmu.Replace('e', TonedE[t]); // mToneRule = ToneRuleEnum.TONERULE_E; // } // else if (mYunmu.Contains("ü")) // { // if (Shengmu.Equals("j") || Shengmu.Equals("q") || Shengmu.Equals("x")) // { // ym = mYunmu.Replace('ü', TonedU[t]); // mToneRule = ToneRuleEnum.TONERULE_VOWELS; // Console.WriteLine("mShengmu: {0}, mYunmu: {1}, ym: {2}", mShengmu, mYunmu, ym); // } // else // { // ym = mYunmu.Replace('ü', TonedV[t]); // mToneRule = ToneRuleEnum.TONERULE_VOWELS; // Console.WriteLine("mShengmu: {0}, mYunmu: {1}, ym: {2}", mShengmu, mYunmu, ym); // } // } // else // { // int indexI = mYunmu.IndexOf('i'); // int indexU = mYunmu.IndexOf('u'); // if (indexI >= 0 && indexU < 0) // { // ym = mYunmu.Replace('i', TonedI[t]); // mToneRule = ToneRuleEnum.TONERULE_VOWELS; // } // else if (indexI < 0 && indexU >= 0) // { // ym = mYunmu.Replace('u', TonedU[t]); // mToneRule = ToneRuleEnum.TONERULE_VOWELS; // } // else if (indexI >= 0 && indexU >= 0) // { // if (indexI < indexU) // { // ym = mYunmu.Replace('u', TonedU[t]); // } // else // { // ym = mYunmu.Replace('i', TonedI[t]); // } // mToneRule = ToneRuleEnum.TONERULE_IU; // } // else // { // // if it goes here, it should be an illegal pinyin, just return what it is // ym = mYunmu; // } // } // return mShengmu + ym; //} public FormattedString GetFormattedTonedString(ToneOfYinjie tone, Color shengmuColor, Color tonedYunmuColor, Color otherYunmuColor) { string ym = ""; int t = (int)tone; int tonedYunmuIndex = -1; if (mYunmu.Contains("a")) { ym = mYunmu.Replace('a', TonedA[t]); tonedYunmuIndex = mYunmu.IndexOf('a'); mToneRule = ToneRuleEnum.TONERULE_A; } else if (mYunmu.Contains("o")) { ym = mYunmu.Replace('o', TonedO[t]); tonedYunmuIndex = mYunmu.IndexOf('o'); mToneRule = ToneRuleEnum.TONERULE_O; } else if (mYunmu.Contains("e")) { ym = mYunmu.Replace('e', TonedE[t]); tonedYunmuIndex = mYunmu.IndexOf('e'); mToneRule = ToneRuleEnum.TONERULE_E; } else if (mYunmu.Contains("ü")) { //if (Shengmu.Equals("j") || Shengmu.Equals("q") || Shengmu.Equals("x")) //{ // ym = mYunmu.Replace('ü', TonedU[t]); // mToneRule = ToneRuleEnum.TONERULE_VOWELS; // //Console.WriteLine("mShengmu: {0}, mYunmu: {1}, ym: {2}", mShengmu, mYunmu, ym); //} //else //{ // ym = mYunmu.Replace('ü', TonedV[t]); // mToneRule = ToneRuleEnum.TONERULE_VOWELS; // //Console.WriteLine("mShengmu: {0}, mYunmu: {1}, ym: {2}", mShengmu, mYunmu, ym); //} ym = mYunmu.Replace('ü', TonedV[t]); tonedYunmuIndex = mYunmu.IndexOf('ü'); mToneRule = ToneRuleEnum.TONERULE_VOWELS; } else { int indexI = mYunmu.IndexOf('i'); int indexU = mYunmu.IndexOf('u'); if (indexI >= 0 && indexU < 0) { ym = mYunmu.Replace('i', TonedI[t]); tonedYunmuIndex = indexI; mToneRule = ToneRuleEnum.TONERULE_VOWELS; } else if (indexI < 0 && indexU >= 0) { ym = mYunmu.Replace('u', TonedU[t]); tonedYunmuIndex = indexU; mToneRule = ToneRuleEnum.TONERULE_VOWELS; } else if (indexI >= 0 && indexU >= 0) { if (indexI < indexU) { ym = mYunmu.Replace('u', TonedU[t]); tonedYunmuIndex = indexU; } else { ym = mYunmu.Replace('i', TonedI[t]); tonedYunmuIndex = indexI; } mToneRule = ToneRuleEnum.TONERULE_IU; } else { // if it goes here, it should be an illegal pinyin, just return what it is ym = mYunmu; } } FormattedString fs = new FormattedString(); if (mShengmu.Length > 0) { fs.Spans.Add(new Span { Text = mShengmu, ForegroundColor = shengmuColor }); } if (tonedYunmuIndex >= 0) { string ymspan1 = ym.Substring(0, tonedYunmuIndex); if (ymspan1.Length > 0) { fs.Spans.Add(new Span { Text = ymspan1, ForegroundColor = otherYunmuColor }); } string ymspan2 = ym.Substring(tonedYunmuIndex, 1); fs.Spans.Add(new Span { Text = ymspan2, ForegroundColor = tonedYunmuColor }); if (tonedYunmuIndex < ym.Length - 1) { fs.Spans.Add(new Span { Text = ym.Substring(tonedYunmuIndex + 1), ForegroundColor = otherYunmuColor }); } } return(fs); }