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); #endregion #region 界面点击事件 ///下拉刷新界面事件 vv.BeginHeaderRefreshingAction += () => { ////关闭刷新View; vv.EndHeaderRefreshing(); PirMethod.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) { PirMethod method = new PirMethod(); 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 == 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); } /// /// 加载UI界面 /// /// 上下滑控件 private void UIView(VerticalRefreshLayout vv) { if (Pir.currPir.FunctioList.Count < 10) { //10个遥控器就会隐藏添加图标 // middFLayout.AddChidren(addDevice); addDevice.Visible = true; } 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.CurrLogicMethod.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) => { PirMethod.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.CurrLogicMethod.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(); try { 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(); } catch { } } else { if (tag) { PirMethod method = new PirMethod(); 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(); try { 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); } } } } catch { } finally { Application.RunOnMainThread(() => { actionBrand(brandList); }); } } else { PirMethod method = new PirMethod(); method.ErrorShow(responsePackNew, ""); } }, id, "品牌列表"); } /// /// 移除界面 /// public override void RemoveFromParent() { BackAction(); base.RemoveFromParent(); } } }