using System; using System.Collections.Generic; using System.Text; using HDL_ON.Entity; using HDL_ON.UI.UI2.Intelligence.Automation.LogicView; using Shared; namespace HDL_ON.UI.UI2.PersonalCenter.PirDevice { public class PirMain : FrameLayout { public PirMain() { Tag = "PirMain"; } /// /// 临时储存设备类型列表 /// List DeviceTypeList = new List(); public void Show() { #region 界面布局 this.BackgroundColor = CSS.CSS_Color.viewMiddle; PirDevice.View.TopView topView = new View.TopView(); topView.topNameBtn.TextID = StringId.hongwaiyaokong; this.AddChidren(topView.FLayoutView()); topView.clickBackBtn.MouseUpEventHandler += (sender, e) => { this.RemoveFromParent(); }; FrameLayout middFLayout = new FrameLayout(); middFLayout.Y = Application.GetRealHeight(64); middFLayout.Height = Application.GetRealHeight(667 - 64); this.AddChidren(middFLayout); FrameLayout pirDeviceFLayout = new FrameLayout(); pirDeviceFLayout.Y = Application.GetRealHeight(12); pirDeviceFLayout.X = Application.GetRealWidth(16); pirDeviceFLayout.Width = Application.GetRealWidth(343); pirDeviceFLayout.Height = Application.GetRealHeight(187); pirDeviceFLayout.BackgroundColor = CSS.CSS_Color.view; pirDeviceFLayout.Radius = (uint)Application.GetRealHeight(12); middFLayout.AddChidren(pirDeviceFLayout); //设备管理 Button text1Btn = new Button { Y = Application.GetRealHeight(11), X = Application.GetRealWidth(16), Width = Application.GetRealWidth(120), Height = Application.GetRealHeight(20), TextSize = TextSize.text14, TextColor = CSS.CSS_Color.textConfirmColor, TextAlignment = TextAlignment.CenterLeft, TextID = StringId.shebeigaunli, IsBold = true, }; pirDeviceFLayout.AddChidren(text1Btn); Button pirIcon = new Button { Y = Application.GetRealHeight(47), X = Application.GetRealWidth(28), Width = Application.GetRealWidth(66), Height = Application.GetRealWidth(66), UnSelectedImagePath = "PirIcon/Infraredtreasure.png", }; pirDeviceFLayout.AddChidren(pirIcon); //mini智能遥控器 Button text2Btn = new Button { Y = Application.GetRealHeight(70), X = Application.GetRealWidth(112), Width = Application.GetRealWidth(120), Height = Application.GetRealHeight(20), TextSize = TextSize.text14, TextColor = CSS.CSS_Color.textTipColor, TextAlignment = TextAlignment.CenterLeft, Text = "mini智能遥控器", }; pirDeviceFLayout.AddChidren(text2Btn); // Button numberDeviceBtn = new Button { Y = Application.GetRealHeight(137), X = Application.GetRealWidth(32), Width = Application.GetRealWidth(100), Height = Application.GetRealHeight(20), TextSize = TextSize.text14, TextColor = CSS.CSS_Color.textColor, TextAlignment = TextAlignment.CenterLeft, Text = "1" + Language.StringByID(StringId.ge), IsBold = true, }; pirDeviceFLayout.AddChidren(numberDeviceBtn); //当前红外遥控设备 Button numberDeviceTextBtn = new Button { Y = numberDeviceBtn.Bottom + Application.GetRealHeight(4), X = Application.GetRealWidth(32), Width = Application.GetRealWidth(100), Height = Application.GetRealHeight(14), TextSize = TextSize.text10, TextColor = CSS.CSS_Color.textCancelColor, TextAlignment = TextAlignment.CenterLeft, TextID = StringId.dangqianhongwaishebei, }; pirDeviceFLayout.AddChidren(numberDeviceTextBtn); // Button currDeviceNumberControlBtn = new Button { Y = Application.GetRealHeight(137), X = Application.GetRealWidth(198), Width = Application.GetRealWidth(80), Height = Application.GetRealHeight(20), TextSize = TextSize.text14, TextColor = CSS.CSS_Color.textColor, TextAlignment = TextAlignment.CenterLeft, Text = "1" + Language.StringByID(StringId.ge), IsBold = true, }; pirDeviceFLayout.AddChidren(currDeviceNumberControlBtn); //已添加遥控器 Button currDeviceNumberControlTextBtn = new Button { Y = currDeviceNumberControlBtn.Bottom + Application.GetRealHeight(4), X = Application.GetRealWidth(198), Width = Application.GetRealWidth(80), Height = Application.GetRealHeight(14), TextSize = TextSize.text10, TextColor = CSS.CSS_Color.textCancelColor, TextAlignment = TextAlignment.CenterLeft, TextID = StringId.yitianjiayaokongqi, }; pirDeviceFLayout.AddChidren(currDeviceNumberControlTextBtn); ///红外宝点击事件 FrameLayout clickFLayout = new FrameLayout(); pirDeviceFLayout.AddChidren(clickFLayout); clickFLayout.MouseUpEventHandler += (sender, e) => { DeviceSet deviceSet = new DeviceSet(); MainPage.BasePageView.AddChidren(deviceSet); deviceSet.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; FrameLayout deviceListFLayout = new FrameLayout(); deviceListFLayout.Y = pirDeviceFLayout.Bottom + Application.GetRealHeight(12); deviceListFLayout.X = Application.GetRealWidth(16); deviceListFLayout.Width = Application.GetRealWidth(343); deviceListFLayout.Height = Application.GetRealHeight(328); deviceListFLayout.BackgroundColor = CSS.CSS_Color.view; deviceListFLayout.Radius = (uint)Application.GetRealHeight(12); middFLayout.AddChidren(deviceListFLayout); ///添加遥控器 Button text3Btn = new Button { Y = Application.GetRealHeight(11), X = Application.GetRealWidth(16), Width = Application.GetRealWidth(100), Height = Application.GetRealHeight(20), TextSize = TextSize.text14, TextColor = CSS.CSS_Color.textConfirmColor, TextAlignment = TextAlignment.CenterLeft, TextID = StringId.tianjiayaokongqi, IsBold = true, }; deviceListFLayout.AddChidren(text3Btn); ///红外宝名称 Button deviceNameBtn = new Button { Y = Application.GetRealHeight(13), X = Application.GetRealWidth(161), Width = Application.GetRealWidth(150), Height = Application.GetRealHeight(17), TextSize = TextSize.text12, TextColor = CSS.CSS_Color.textColor, TextAlignment = TextAlignment.CenterRight, Text = "mini智能遥控器", }; deviceListFLayout.AddChidren(deviceNameBtn); if (Pir.pirDeviceList.Count != 0) { deviceNameBtn.Text = Pir.pirDeviceList[0].name; Pir.currPir = Pir.pirDeviceList[0]; } //下拉图标 var dropdownIconBtn = new Button { Y = Application.GetRealHeight(13), X = Application.GetRealWidth(343 - 8 - 16), Width = Application.GetRealWidth(16), Height = Application.GetRealWidth(16), UnSelectedImagePath = "PirIcon/dropdown.png", }; deviceListFLayout.AddChidren(dropdownIconBtn); deviceNameBtn.MouseUpEventHandler += (sender, e) => { #region 区域弹框界面 FrameLayout fLayout = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence, }; this.AddChidren(fLayout); fLayout.MouseUpEventHandler += (sender1, e1) => { fLayout.RemoveFromParent(); }; FrameLayout iconFLyout = new FrameLayout { X = Application.GetRealWidth(205), Y = Application.GetRealHeight(314), Width = Application.GetRealWidth(160), Height = Application.GetRealHeight(21 + 44), //BackgroundImagePath = "LogicIcon/bjicon.png", }; fLayout.AddChidren(iconFLyout); FrameLayout textFLyout = new FrameLayout { X = Application.GetRealWidth(8), Y = Application.GetRealHeight(14), Width = Application.GetRealWidth(144), Height = Application.GetRealHeight(44), }; VerticalScrolViewLayout vv = new VerticalScrolViewLayout { X = Application.GetRealWidth(8), Y = Application.GetRealHeight(14), Width = Application.GetRealWidth(144), Height = Application.GetRealHeight(44 * 4), }; if (Pir.pirDeviceList.Count > 4) { iconFLyout.Height = Application.GetRealHeight(21 + 44 * 4); iconFLyout.AddChidren(vv); iconFLyout.BackgroundImagePath = "PirIcon/4.png"; } else { iconFLyout.AddChidren(textFLyout); iconFLyout.Height = Application.GetRealHeight(21 + 44 * Pir.pirDeviceList.Count); textFLyout.Height = Application.GetRealHeight(44 * Pir.pirDeviceList.Count); iconFLyout.BackgroundImagePath = $"PirIcon/{Pir.pirDeviceList.Count}.png"; } #endregion for (int i = 0; i < Pir.pirDeviceList.Count; i++) { var pirJson = Pir.pirDeviceList[i]; View.PirNameView pirNameView = new View.PirNameView(); if (Pir.pirDeviceList.Count > 4) { vv.AddChidren(pirNameView.FLayoutView()); } else { pirNameView.frameLayout.Y = Application.GetRealHeight(i * 44); textFLyout.AddChidren(pirNameView.FLayoutView()); } pirNameView.btnName.Text = pirJson.name; pirNameView.btnClick.Tag = pirJson; pirNameView.btnClick.MouseUpEventHandler += (sender2, e2) => { fLayout.RemoveFromParent(); deviceNameBtn.Text = pirJson.name; Pir.currPir = pirJson; }; if (Pir.pirDeviceList.Count - 1 == i) { ///改变最后那条一个线的颜色,界面显示效果作用; pirNameView.btnLine.BackgroundColor = CSS.CSS_Color.view; } } }; #endregion int line = 0; for (int i = 1, j = 0; i <= 7; i++, j++) { var currpirdeviceFLayout = new FrameLayout { Width = Application.GetRealWidth(80), Height = Application.GetRealWidth(80), X = Application.GetRealWidth(26 + (80 + 25) * j), Y = Application.GetRealHeight(52 + (80 + 12) * line), }; deviceListFLayout.AddChidren(currpirdeviceFLayout); var deviceIconBtn = new Button { Y = Application.GetRealHeight(8), X = Application.GetRealWidth(20), Width = Application.GetRealWidth(40), Height = Application.GetRealWidth(40), UnSelectedImagePath = "PirIcon/Infraredtreasure.png", }; currpirdeviceFLayout.AddChidren(deviceIconBtn); var iconNameBtn = new Button { Y = deviceIconBtn.Bottom + Application.GetRealHeight(8), Width = Application.GetRealWidth(80), Height = Application.GetRealHeight(17), TextSize = TextSize.text12, TextColor = CSS.CSS_Color.TextualColor, TextAlignment = TextAlignment.Center, }; currpirdeviceFLayout.AddChidren(iconNameBtn); var clickBtn = new Button { Tag = i }; currpirdeviceFLayout.AddChidren(clickBtn); if (i % 3 == 0) { //满一行重置j=0值; j = -1; line += 1; } GetIconAndText(i, deviceIconBtn, iconNameBtn); clickBtn.MouseUpEventHandler += (sender, e) => { //1=空调;2=电视;3=风扇;4=机顶盒;5=DVD/EVD/VCD;6=投影仪;7=自定义; int if_value = int.Parse(clickBtn.Tag.ToString()); if (if_value == 7) { Method method = new Method(); method.AddControl(this, (control) => { AddButton addButton = new AddButton(); MainPage.BasePageView.AddChidren(addButton); addButton.Show(control); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }); } else { var strings = GetTypeString(if_value).Split('-'); var jobDeviceType = DeviceTypeList.Find((c) => c.deviceType == strings[0]); if (jobDeviceType == null) { return; } GetBrandList(jobDeviceType.id, (brandList) => { var brandSupportStrList = GetBrandSupport(if_value); var strList = new List(); for (int str = 0; str < brandList.Count; str++) { string s = brandList[str].brandName; //var bool_if = brandSupportStrList.Find((c) => s.Contains(c)); //if (bool_if != null) //{ // strList.Add(s); //} strList.Add(s); } //Application.RunOnMainThread(() => //{ // BrandList brandObj = new BrandList(); // MainPage.BasePageView.AddChidren(brandObj); // brandObj.Show(brandList, strList, strings[1]); // MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; //}); GoToShowSortSelection(strList); }); } }; } GetDeviceTypeList(); } void GoToShowSortSelection(List dataList) { Dictionary> dict = new Dictionary>(); foreach (var data in dataList) { //提取字符串第一位 //string s = data.Substring(0, 1); var key = GetCharSpellCode(data); if (dict.ContainsKey(key)) { var value = dict[key]; if (value == null) { value = new List(); } value.Add(data); } else { var value = new List(); value.Add(data); dict.Add(key, value); } } Application.RunOnMainThread(() => { JLCountrycode.CountryCodeView.Current.ShowSortSelection("选择红外品牌", dict, (countryName) => { //Console.WriteLine("countryName: " + countryName); Utlis.ShowTip("选中了:" + countryName); }); }); } /// /// 获取汉字首字母 /// /// /// 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 (""); } /// /// 获取品牌支持 /// /// 索引值 private List GetBrandSupport(int index) { List strList = new List(); switch (index) { case 1: { strList.Add("格力"); strList.Add("美的"); strList.Add("海尔"); strList.Add("松下"); strList.Add("海信"); strList.Add("长虹"); } break; case 2: { strList.Add("创维"); strList.Add("TCL"); strList.Add("海信"); strList.Add("长虹"); strList.Add("海尔"); strList.Add("三星"); strList.Add("乐视"); strList.Add("索尼"); strList.Add("LG乐金"); } break; case 3: { } break; case 4: { } break; case 5: { } break; case 6: { } break; } return strList; } /// /// 获取设备类型str /// /// 索引值 private string GetTypeString(int index) { string type = ""; switch (index) { case 1: { //空调 type = "ac-" + SPK.AcIr; } break; case 2: { //电视 type = "tv-" + SPK.ElectricTV; } break; case 3: { //风扇 type = "fan-" + SPK.ElectricFan; } break; case 4: { //机顶盒 // type = "set_top_box-" + SPK.ElectricTV; } break; case 5: { //影碟机 // type = "dvd-" + SPK.ElectricTV; } break; case 6: { //投影仪 // type = "projector-" + SPK.ElectricTV; } break; } return type; } /// /// 设置图片和备注 /// /// 索引值 /// 图标Btn /// 设备备注Btn private void GetIconAndText(int index, Button deviceIconBtn, Button deviceNameBtn) { string iconPath = ""; int deviceNameIndex = 0; switch (index) { case 1: { iconPath = "PirIcon/air.png"; deviceNameIndex = StringId.kongtiao; } break; case 2: { iconPath = "PirIcon/tv.png"; deviceNameIndex = StringId.dianshi; } break; case 3: { iconPath = "PirIcon/fan.png"; deviceNameIndex = StringId.fengshan; } break; case 4: { iconPath = "PirIcon/stb.png"; deviceNameIndex = StringId.jidinghe; } break; case 5: { iconPath = "PirIcon/dvd.png"; deviceNameIndex = StringId.dvd; } break; case 6: { iconPath = "PirIcon/projector.png"; deviceNameIndex = StringId.touyingyi; } break; case 7: { iconPath = "PirIcon/custom.png"; deviceNameIndex = StringId.zidingyi; } break; } deviceIconBtn.UnSelectedImagePath = iconPath; deviceNameBtn.TextID = deviceNameIndex; } /// /// 读取红外设备类型列表 /// private void GetDeviceTypeList() { PirSend.GetDeviceTypesList(this, (responsePackNew) => { if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "") { //清空之前数据 DeviceTypeList.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 objDeviceType = Newtonsoft.Json.JsonConvert.DeserializeObject(str); if (objDeviceType != null) { if (null == DeviceTypeList.Find((c) => c.id == objDeviceType.id)) { DeviceTypeList.Add(objDeviceType); } } } } else { Method method = new Method(); method.ErrorShow(responsePackNew); } }, "", "设备类型列表"); } /// /// 读取红外设备类型的品牌列表 /// private void GetBrandList(string id, Action> actionBrand) { List brandList = new List(); PirSend.GetDeviceTypesList(this, (responsePackNew) => { if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "") { //清空之前数据 brandList.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 brand = Newtonsoft.Json.JsonConvert.DeserializeObject(str); if (brand != null) { if (null == brandList.Find((c) => c.id == brand.id)) { brandList.Add(brand); } } } actionBrand(brandList); } else { Method method = new Method(); method.ErrorShow(responsePackNew); } }, id, "品牌列表"); } } }