using System; using HDL_ON.UI.UI2.Intelligence.Automation.LogicView; using Shared; using System.Collections.Generic; using System.Text; namespace HDL_ON.UI.UI2.PersonalCenter.PirDevice { public class BrandList:FrameLayout { public void Show(List brandList, string spk) { var strList = new List(); for (int str = 0; str < brandList.Count; str++) { //提取字符串列表 string s = brandList[str].brandName; strList.Add(s); } var dicList = GetDateList(strList); JLCountrycode.CountryCodeView.Current.ShowSortSelection(Language.StringByID(StringId.xuanzehongwaipinpai), dicList, (countryName) => { var brandObj = brandList.Find((c) => c.brandName == countryName); if (brandObj == null) { return; } GetLibraryList(brandObj.id, (libraryList) => { Matching matching = new Matching(); MainPage.BasePageView.AddChidren(matching); matching.Show(brandList, libraryList, spk); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }); }); } /// /// 读取品牌红外码库列表 /// private void GetLibraryList(string id, Action> actionBrand) { List libraryList = new List(); PirSend.GetDeviceTypesList(this, (responsePackNew) => { if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "") { //清空之前数据 libraryList.Clear(); var jArray = Newtonsoft.Json.Linq.JArray.Parse(responsePackNew.Data.ToString()); for (int a = 0; a < jArray.Count; a++) { var jay = jArray[a]; var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay); var library = Newtonsoft.Json.JsonConvert.DeserializeObject(str); if (library != null) { if (libraryList.Count < 60) { //限制60个库; libraryList.Add(library); } } } actionBrand(libraryList); } else { PirMethod method = new PirMethod(); method.ErrorShow(responsePackNew, ""); } }, id, "品牌红外码库列表"); } /// /// 获取显示列表 /// /// private Dictionary> GetDateList(List mList) { Dictionary> dict = new Dictionary>(); //获取A-Z字母列表 var a_zList = GetList(); //遍历A-Z字母列表 for (int i = 0; i < a_zList.Count; i++) { var zimu = a_zList[i]; var list = new List(); //遍历字符串列表 for (int a = 0; a < mList.Count; a++) { var str = mList[a]; //提取字符串第一位 string s = str.Substring(0, 1); //返回字符串第一位首字母(大写) var a_z = GetCharSpellCode(s); //判断是否同字母 if (zimu == a_z) { //添加数据 list.Add(str); } } dict.Add(zimu, list); } return dict; } /// /// 获取A-Z字母列表 /// /// private List GetList() { var list = new List(); for (int j = 65; j <= 90; j++) { char c = (char)j; string s = c.ToString(); list.Add(s); } return list; } /// /// 获取汉字首字母 /// /// /// private string GetCharSpellCode(string textValue) { long iCnChar; byte[] ZW = Encoding.GetEncoding("gb2312").GetBytes(textValue); //如果是字母,则直接返回 if (ZW.Length == 1) { return textValue.ToUpper(); } else { // get the array of byte from the single char int i1 = (short)(ZW[0]); int i2 = (short)(ZW[1]); iCnChar = i1 * 256 + i2; } // iCnChar match the constant if ((iCnChar >= 45217) && (iCnChar <= 45252)) { return "A"; } else if ((iCnChar >= 45253) && (iCnChar <= 45760)) { return "B"; } else if ((iCnChar >= 45761) && (iCnChar <= 46317)) { return "C"; } else if ((iCnChar >= 46318) && (iCnChar <= 46825)) { return "D"; } else if ((iCnChar >= 46826) && (iCnChar <= 47009)) { return "E"; } else if ((iCnChar >= 47010) && (iCnChar <= 47296)) { return "F"; } else if ((iCnChar >= 47297) && (iCnChar <= 47613)) { return "G"; } else if ((iCnChar >= 47614) && (iCnChar <= 48118)) { return "H"; } else if ((iCnChar >= 48119) && (iCnChar <= 49061)) { return "J"; } else if ((iCnChar >= 49062) && (iCnChar <= 49323)) { return "K"; } else if ((iCnChar >= 49324) && (iCnChar <= 49895)) { return "L"; } else if ((iCnChar >= 49896) && (iCnChar <= 50370)) { return "M"; } else if ((iCnChar >= 50371) && (iCnChar <= 50613)) { return "N"; } else if ((iCnChar >= 50614) && (iCnChar <= 50621)) { return "O"; } else if ((iCnChar >= 50622) && (iCnChar <= 50905)) { return "P"; } else if ((iCnChar >= 50906) && (iCnChar <= 51386)) { return "Q"; } else if ((iCnChar >= 51387) && (iCnChar <= 51445)) { return "R"; } else if ((iCnChar >= 51446) && (iCnChar <= 52217)) { return "S"; } else if ((iCnChar >= 52218) && (iCnChar <= 52697)) { return "T"; } else if ((iCnChar >= 52698) && (iCnChar <= 52979)) { return "W"; } else if ((iCnChar >= 52980) && (iCnChar <= 53640)) { return "X"; } else if ((iCnChar >= 53689) && (iCnChar <= 54480)) { return "Y"; } else if ((iCnChar >= 54481) && (iCnChar <= 55289)) { return "Z"; } else return ("ZZ"); } } }