using System; using System.Collections.Generic; 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 Action BackAction; /// /// 临时储存设备类型列表 /// List DeviceTypeList = new List(); public void Show() { 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) => { BackAction(); this.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); //加号图标 Button addDevice = new Button { Y = Application.GetRealHeight(480), X = Application.GetRealWidth(293), Width = Application.GetRealWidth(82), Height = Application.GetRealWidth(84), UnSelectedImagePath = "PirIcon/add.png", }; if (Pir.currPir.FunctioList.Count < 10) { //10个遥控器就会隐藏添加图标 middFLayout.AddChidren(addDevice); } vv.BeginHeaderRefreshingAction += () => { ////关闭刷新View; vv.EndHeaderRefreshing(); Method.GetControlList(this, () => { Application.RunOnMainThread(() => { //刷新界面 UIView(vv); }); }, Pir.currPir); }; UIView(vv); topView.clickSetBtn.MouseUpEventHandler += (sender, e) => { SetPir setPir = new SetPir(); MainPage.BasePageView.AddChidren(setPir); setPir.Show(() => { BackAction(); ////刷新界面 UIView(vv); }); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; addDevice.MouseUpEventHandler += (sender, e) => { FrameLayout frame = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence, }; this.AddChidren(frame); FrameLayout controlFl = new FrameLayout(); controlFl.Y = Application.GetRealHeight(319); controlFl.X = Application.GetRealWidth(16); controlFl.Width = Application.GetRealWidth(343); controlFl.Height = Application.GetRealHeight(328); controlFl.BackgroundColor = CSS.CSS_Color.view; controlFl.Radius = (uint)Application.GetRealHeight(12); frame.AddChidren(controlFl); ///添加遥控器 Button text3Btn = new Button { Y = Application.GetRealHeight(12), X = Application.GetRealWidth(16), Width = Application.GetRealWidth(343 - 16 * 2), Height = Application.GetRealHeight(20), TextSize = TextSize.text14, TextColor = CSS.CSS_Color.textConfirmColor, TextAlignment = TextAlignment.Center, TextID = StringId.tianjiayaokongqi, IsBold = true, }; controlFl.AddChidren(text3Btn); frame.MouseUpEventHandler += (sender1, e1) => { frame.RemoveFromParent(); }; 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), }; controlFl.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 += (sender2, e2) => { //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) => { //成功后移除; frame.RemoveFromParent(); AddButton addButton = new AddButton(); MainPage.BasePageView.AddChidren(addButton); addButton.Show(control); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }); } else { //进来都要移除; frame.RemoveFromParent(); if (DeviceTypeList.Count == 0) { GetDeviceTypeList(true, () => { DeviceTypeViewClick(if_value); }); } else { DeviceTypeViewClick(if_value); } } }; } }; } /// /// 加载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); }, "删除", "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 = 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]); }); }); } /// /// 获取设备类型str /// /// 索引值 private string GetTypeString(int index) { string type = ""; switch (index) { case 1: { //空调 type = "ac-" + SPK.AcIr; } break; case 2: { //电视 type = "tv-" + SPK.TvIr; } 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; } /// /// 读取红外设备类型列表 /// /// 标识要不要提示(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, "品牌列表"); } } }