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"; } /// /// 回调 /// public static Action BackAction; /// /// 添加图标Btn /// Button addDevice; /// /// 临时储存设备类型列表 /// 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; topView.topIconBtn.Visible = true; this.AddChidren(topView.FLayoutView()); topView.clickBackBtn.MouseUpEventHandler += (sender, e) => { RemoveFromParent(); }; FrameLayout middFLayout = new FrameLayout(); middFLayout.Y = Application.GetRealHeight(64); middFLayout.Height = Application.GetRealHeight(667 - 64); this.AddChidren(middFLayout); VerticalRefreshLayout vv = new VerticalRefreshLayout(); middFLayout.AddChidren(vv); //加号图标 addDevice = new Button { Y = Application.GetRealHeight(480), X = Application.GetRealWidth(293), Width = Application.GetRealWidth(82), Height = Application.GetRealWidth(84), UnSelectedImagePath = "PirIcon/add.png", Visible=false, }; middFLayout.AddChidren(addDevice); if (Pir.currPir.FunctioList.Count < 10) { //10个遥控器就会隐藏添加图标 // middFLayout.AddChidren(addDevice); addDevice.Visible = true; } #endregion #region 界面点击事件 ///下拉刷新界面事件 vv.BeginHeaderRefreshingAction += () => { ////关闭刷新View; vv.EndHeaderRefreshing(); Method.GetControlList(this, () => { Application.RunOnMainThread(() => { //刷新界面 UIView(vv); }); }, Pir.currPir); }; ///设置图标点击事件 topView.clickSetBtn.MouseUpEventHandler += (sender, e) => { SetPir setPir = new SetPir(); MainPage.BasePageView.AddChidren(setPir); setPir.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; ///添加遥控器图标点击事件 addDevice.MouseUpEventHandler += (sender, e) => { //进来不允许左滑 MainPage.BasePageView.ScrollEnabled = false; View.Buttons buttons = new View.Buttons(); buttons.AddFrameLayout(this, (if_value, view) => { //关闭允许左滑 MainPage.BasePageView.ScrollEnabled = true; //1=空调;2=电视;3=风扇;4=机顶盒;5=DVD/EVD/VCD;6=投影仪;7=自定义; if (if_value == 7) { Method method = new Method(); method.AddControl(this, (control) => { //成功后移除; view.RemoveFromParent(); AddButton addButton = new AddButton(); MainPage.BasePageView.AddChidren(addButton); addButton.Show(control); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }); } else { if (if_value == 3 || if_value == 4 || if_value == 5 || if_value == 6) { new TipPopView().FlashingBox(Language.StringByID(StringId.zanshibuzhichigaigongneng)); return; } if (DeviceTypeList.Count == 0) { GetDeviceTypeList(true, () => { DeviceTypeViewClick(if_value); //获取成功之后移除 view.RemoveFromParent(); }); } else { DeviceTypeViewClick(if_value); view.RemoveFromParent(); } } }, 7); }; #endregion ///初始化界面 UIView(vv); } 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 (""); } /// /// 加载UI界面 /// /// 上下滑控件 private void UIView(VerticalRefreshLayout vv) { vv.RemoveAll(); #region 红外宝图标 版本号 名称 状态 FrameLayout fLayout = new FrameLayout { Width = Application.GetRealWidth(375), Height = Application.GetRealHeight(12 + 92 + (50 * Pir.currPir.FunctioList.Count)), }; vv.AddChidren(fLayout); View.PirView pirView = new View.PirView(); //红外宝名称 pirView.deviceNameBtn.Text = Pir.currPir.name; //红外宝当前有多少个遥控器 pirView.geBtn.Text = Pir.currPir.FunctioList.Count.ToString(); //红外宝是否在线-离线 if (Pir.currPir.online) { pirView.stateIconBtn.IsSelected = true; pirView.stateTextBtn.IsSelected = true; pirView.stateTextBtn.TextID = StringId.zaixian; } else { pirView.stateIconBtn.IsSelected = false; pirView.stateTextBtn.IsSelected = false; pirView.stateTextBtn.TextID = StringId.lixian; } //标记红外宝 pirView.clickBtn.Tag = Pir.currPir; //加载界面 pirView.Show(Pir.currPir.FunctioList.Count, fLayout); //最后一个后面增加间隔背景 vv.AddChidren(new FrameLayout { Height = Application.GetRealHeight(20) }); #endregion for (int j = 0; j < Pir.currPir.FunctioList.Count; j++) { var control = Pir.currPir.FunctioList[j]; View.ControlView controlView = new View.ControlView(); controlView.Show(pirView.devfLayout, j); //遥控器名称 controlView.nameBtn.Text = control.name; //遥控器存放区域 controlView.areaBtn.Text = Intelligence.Automation.LogicMethod.GetGetRoomName(control); //标记遥控器 controlView.delBtn.Tag = control; //删除点击事件 controlView.delBtn.MouseUpEventHandler += (sender, e) => { var Function = controlView.delBtn.Tag as Entity.Function; string text = Language.StringByID(StringId.shanchushebei) + Function.name + "?"; TipPopView tipPopView = new TipPopView(); tipPopView.TipBox(StringId.tip, text, (dialog) => { Method.ThreadSend(new Control { deviceId=control.deviceId}, (responsePackNew) => { dialog.Close(); var function = Pir.currPir.FunctioList.Find((c) => c.sid == Function.sid); if (function != null) { Pir.currPir.FunctioList.Remove(Function); } UIView(vv); if (Pir.currPir.FunctioList.Count < 10) { //10个遥控器就会隐藏添加图标 // middFLayout.AddChidren(addDevice); addDevice.Visible = true; } }, "删除", "dialog", null, dialog); }, () => { }, false); }; //view点击事件 controlView.clickBtn.MouseUpEventHandler += (sender, e) => { EditControl editControl = new EditControl(); MainPage.BasePageView.AddChidren(editControl); editControl.Show(control,(device) => { //回调更新名字/区域 controlView.nameBtn.Text = device.name; controlView.areaBtn.Text = Intelligence.Automation.LogicMethod.GetGetRoomName(device); }); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; if (j == Pir.currPir.FunctioList.Count - 1) { //最后改变一个线的颜色 controlView.line1Btn.BackgroundColor = CSS.CSS_Color.viewTranslucence; controlView.funControlRow.LineColor = CSS.CSS_Color.viewTranslucence; } } } /// /// 设备进入下一级方法 /// /// 控件索引值 private void DeviceTypeViewClick(int if_value) { var strings = View.Buttons.GetTypeString(if_value).Split('-'); var jobDeviceType = DeviceTypeList.Find((c) => c.deviceType == strings[0]); if (jobDeviceType == null) { return; } GetBrandList(jobDeviceType.id, (brandList) => { Application.RunOnMainThread(() => { BrandList brandObj = new BrandList(); brandObj.Show(brandList, strings[1]); }); }); } /// /// 读取红外设备类型列表 /// /// 表示要不要提示错误信息(true=提示) /// 回调函数 public void GetDeviceTypeList(bool tag, Action action) { 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); } } } action(); } else { if (tag) { Method method = new Method(); method.ErrorShow(responsePackNew, ""); } } }, "", "设备类型列表"); } /// /// 读取红外设备类型的品牌列表 /// public 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, "品牌列表"); } /// /// 移除界面 /// public override void RemoveFromParent() { BackAction(); base.RemoveFromParent(); } } }