using System; using Shared.Common; namespace Shared.Phone.UserCenter.DeviceBind { /// /// 空气质量传感器的绑定多个时间设置 /// public class AirQualitySensorLedBindTime : BindCommonLayout { /// 构造函数 /// /// public AirQualitySensorLedBindTime(ZigBee.Device.TemperatureSensor sensor) { this.sensor = sensor; } #region 变量申明 /// /// 当前空气质量传感器对象 /// ZigBee.Device.TemperatureSensor sensor; /// /// 显示被绑定设备或场景的view /// VerticalFrameRefreshControl midVerticalRefreshLayout; /// /// 空数据显示布局 /// FrameLayout blankFrameLayout; /// /// 列表数据是否为空 /// bool isEmpty = true; #endregion /// /// 初始化数据 /// void InitListInfo() { System.Threading.Tasks.Task.Run(async () => { try { bool isLost = false; for (int i = 0; i < 5; i++) { if (isLost) { continue;//只要有一条获取失败,剩下的就停止获取,防止循环后等待透传时间太长 } var result = await sensor.ReadAirQualitySensorLedTime(i); if (result != null) { if (result.enable == 1) { if (sensor.AirQualitySensorLedTimeList.ContainsKey(result.serialNum)) { sensor.AirQualitySensorLedTimeList[result.serialNum] = result; } else { sensor.AirQualitySensorLedTimeList.Add(result.serialNum, result); } } else { if (sensor.AirQualitySensorLedTimeList.ContainsKey(result.serialNum)) { sensor.AirQualitySensorLedTimeList.Remove(result.serialNum); } } } else { isLost = true; } } if (isLost) { Application.RunOnMainThread(() => { new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GetLedTimeLost), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(CommonPage.Instance); }); } } catch { } finally { Application.RunOnMainThread(() => { RefreshList(); midVerticalRefreshLayout.EndHeaderRefreshing(); CommonPage.Loading.Hide(); }); } }); } /// /// 显示 /// public void Show() { TopFrameLayout(); MiddleFrameLayout(); CommonPage.Loading.Start(""); InitListInfo(); } /// /// Top布局 /// void TopFrameLayout() { this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.SetAirQualitySensorLight)); EventHandler eHandlerBack = (sender, e) => { RemoveFromParent(); }; this.btnBack.MouseUpEventHandler += eHandlerBack; this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack; var btnAddFrameLayout = new FrameLayout() { X = Application.GetRealWidth(772 - 58), Width = Application.GetRealWidth(192), }; this.titleFrameLayout.AddChidren(btnAddFrameLayout); var btnBindAdd = new Button { X = Application.GetRealWidth(62), Height = Application.GetMinReal(72), Width = Application.GetMinReal(72), UnSelectedImagePath = "BindPic/BindAdd.png", }; btnAddFrameLayout.AddChidren(btnBindAdd); #region eHandlerAdd EventHandler eHandlerAdd = (sender, e) => { if (sensor.AirQualitySensorLedTimeList.Count == 5) { new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.LedBindFull), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(CommonPage.Instance); return; } var airQualitySensorLogic = new Shared.Phone.UserCenter.DeviceBind.AirQualitySensorLogic(sensor); Shared.Phone.UserView.HomePage.Instance.AddChidren(airQualitySensorLogic); Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; airQualitySensorLogic.Show(); airQualitySensorLogic.refreshAction = () => { RefreshList(); }; }; btnBindAdd.MouseDownEventHandler += eHandlerAdd; btnAddFrameLayout.MouseDownEventHandler += eHandlerAdd; #endregion } /// /// Middle布局 /// void MiddleFrameLayout() { this.MidFrameLayout(this); VerticalFrameLayout(); BlankFrameLayout(); } /// /// VerticalFrameLayout布局 /// void VerticalFrameLayout() { midVerticalRefreshLayout = new VerticalFrameRefreshControl(29) { Height = this.midFrameLayout.Height + 1, }; this.midFrameLayout.AddChidren(midVerticalRefreshLayout); midVerticalRefreshLayout.BeginHeaderRefreshingAction += () => { midVerticalRefreshLayout.BeginHeaderRefreshing(); InitListInfo(); }; } /// /// BlankFrameLayout布局 /// void BlankFrameLayout() { blankFrameLayout = new FrameLayout { Height = this.midFrameLayout.Height, }; this.midFrameLayout.AddChidren(blankFrameLayout); var entryStatusPic = new Button { X = Application.GetRealWidth(213), Y = Application.GetRealHeight(418), Height = Application.GetRealHeight(556), Width = Application.GetRealWidth(654), UnSelectedImagePath = "BindPic/BindEmptyPic.png", }; blankFrameLayout.AddChidren(entryStatusPic); var btnPicTip = new Button { Y = Application.GetRealHeight(1020), Text = Language.StringByID(R.MyInternationalizationString.NoControlTargets), TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, Gravity = Gravity.CenterHorizontal, TextSize = 12, Height = Application.GetRealHeight(49), }; blankFrameLayout.AddChidren(btnPicTip); } /// /// 按键绑定表显示 /// async void RefreshList() { if (sensor.AirQualitySensorLedTimeList.Count == 0) { isEmpty = true; } else { isEmpty = false; } if (isEmpty) { midVerticalRefreshLayout.Height = 0; blankFrameLayout.Height = this.midFrameLayout.Height; return; } else { blankFrameLayout.Height = 0; midVerticalRefreshLayout.Height = this.midFrameLayout.Height; midVerticalRefreshLayout.RemoveAll(); } #region 数据处理 int currentIndex = 0; foreach (var key in sensor.AirQualitySensorLedTimeList.Keys) { var ledTimeData = sensor.AirQualitySensorLedTimeList[key]; var rowLayout = new RowLayoutControl(midVerticalRefreshLayout.rowSpace / 2); rowLayout.BackgroundColor = ZigbeeColor.Current.XMWhite; midVerticalRefreshLayout.AddChidren2(rowLayout); rowLayout.frameTable.UseClickStatu = false; var devicePic = rowLayout.frameTable.AddLeftIcon(); devicePic.Y = Application.GetRealHeight(49); devicePic.UnSelectedImagePath = "AirQualitySensor/LED84.png"; #region 绑定数据处理 var btnBindNameText = ledTimeData.remark; string sm = ledTimeData.startMin.ToString(); string em = ledTimeData.endMin.ToString(); if (ledTimeData.startMin < 10) { sm = "0" + ledTimeData.startMin; } if (ledTimeData.endMin < 10) { em = "0" + ledTimeData.endMin; } var btnTimeText = ledTimeData.startHour + ":" + sm + "-" + ledTimeData.endHour + ":" + em; var btnTipText = Language.StringByID(R.MyInternationalizationString.LedClose); if (currentIndex == sensor.AirQualitySensorLedTimeList.Count - 1) { rowLayout.LineColor = Shared.Common.ZigbeeColor.Current.XMWhite; } rowLayout.frameTable.AddTopView(btnBindNameText, 570); rowLayout.frameTable.AddBottomView(btnTimeText, 410); rowLayout.frameTable.AddMostRightView(btnTipText, 280); rowLayout.frameTable.AddBottomLine(); var btnEditor = rowLayout.AddEditorControl(); btnEditor.ButtonClickEvent += (sender, e) => { var airQualitySensorLogic = new Shared.Phone.UserCenter.DeviceBind.AirQualitySensorLogic(sensor, ledTimeData); Shared.Phone.UserView.HomePage.Instance.AddChidren(airQualitySensorLogic); Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; airQualitySensorLogic.Show(); airQualitySensorLogic.refreshAction = () => { RefreshList(); }; }; var btnDel = rowLayout.AddDeleteControl(); btnDel.ButtonClickEvent += async (sender, e) => { try { Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); }); ledTimeData.enable = 0; var result = await sensor.SetAirQualitySensorLedTime(ledTimeData); if (result != null && result.responseData != null) { if (result.responseData.status == 0) { Application.RunOnMainThread(() => { sensor.AirQualitySensorLedTimeList.Remove(ledTimeData.serialNum); RefreshList(); }); } else { Application.RunOnMainThread(() => { new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel); }); } } else { Application.RunOnMainThread(() => { new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel); }); } } catch { } finally { Application.RunOnMainThread(() => { CommonPage.Loading.Hide(); }); } }; #endregion currentIndex++; } midVerticalRefreshLayout.AdjustTableHeight(Application.GetRealHeight(23)); #endregion } /// /// 重写移除方法 /// public override void RemoveFromParent() { base.RemoveFromParent(); } } }