New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using Shared.Common; |
| | | using Shared.Phone.UserCenter; |
| | | using ZigBee.Device; |
| | | |
| | | namespace Shared.Phone.MainPage.ControlForm |
| | | { |
| | | /// <summary>
|
| | | /// 新风类型的深度卡片界面
|
| | | /// </summary> |
| | | public class DeviceFreshAirDetailCardForm : DeviceDetailCardCommonForm |
| | | { |
| | | #region ■ 变量声明___________________________ |
| | | /// <summary>
|
| | | /// 界面上可以操作的控件
|
| | | /// </summary>
|
| | | private List<ButtonBase> listControl = new List<ButtonBase>(); |
| | | /// <summary>
|
| | | /// 控件
|
| | | /// </summary>
|
| | | private FreshAir freshAirDev = null;
|
| | | /// <summary>
|
| | | /// 状态控件
|
| | | /// </summary>
|
| | | private NormalViewControl btnStatu = null;
|
| | | /// <summary>
|
| | | /// 当前的文本
|
| | | /// </summary>
|
| | | private string CurrentText = string.Empty;
|
| | |
|
| | | /// <summary>
|
| | | /// 设备名称控件
|
| | | /// </summary>
|
| | | private NormalViewControl btnDeviceName = null;
|
| | |
|
| | | #endregion |
| | | |
| | | #region ■ 初始化_____________________________ |
| | | public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack) |
| | | { |
| | | //左滑不能 |
| | | this.ScrollEnabled = true;
|
| | | this.freshAirDev = (FreshAir)this.device; |
| | | //先清空 |
| | | this.listControl = new List<ButtonBase>(); |
| | | InitFreshAirControl(frameWhiteBack); |
| | | UpdateStatus(); |
| | | } |
| | | |
| | | /// <summary>
|
| | | /// 初始化新风控件
|
| | | /// </summary>
|
| | | /// <param name="frameWhiteBack"></param>
|
| | | private void InitFreshAirControl(FrameLayout frameWhiteBack)
|
| | | { |
| | | //新风控件的容器 |
| | | var frameAcBack = new FrameLayout();
|
| | | frameAcBack.Y = Application.GetRealHeight(262);
|
| | | frameAcBack.Width = Application.GetMinRealAverage(444);
|
| | | frameAcBack.Height = Application.GetMinRealAverage(444);
|
| | | frameAcBack.Gravity = Gravity.CenterHorizontal;
|
| | | frameAcBack.BackgroundImagePath = "FreshAir/FreshAirPic.png"; |
| | | frameWhiteBack.AddChidren(frameAcBack); |
| | | |
| | | //新风自动Layout【为了扩大点击范围】 |
| | | var autoFrameLayout = new NormalViewControl(213 + 40, 63 + 80, true); |
| | | autoFrameLayout.X = Application.GetRealWidth(275 - 20); |
| | | autoFrameLayout.Y = Application.GetRealHeight(821 - 20); |
| | | frameWhiteBack.AddChidren(autoFrameLayout); |
| | | autoFrameLayout.ButtonClickEvent += HandlerAuto; |
| | | |
| | | // 自动(第1个,listControl【0】)
|
| | | var btnAuto = new NormalViewControl(213, 63, true);
|
| | | btnAuto.X = Application.GetRealWidth(275);
|
| | | btnAuto.Y = Application.GetRealHeight(821); |
| | | btnAuto.TextID = R.MyInternationalizationString.Mode_Auto; |
| | | btnAuto.TextColor = ZigbeeColor.Current.XMGray3; |
| | | btnAuto.IsBold = false; |
| | | btnAuto.TextAlignment = TextAlignment.Center; |
| | | frameWhiteBack.AddChidren(btnAuto);
|
| | | |
| | | this.listControl.Add(btnAuto);
|
| | | btnAuto.ButtonClickEvent += HandlerAuto;
|
| | | |
| | | //自动下划线(第2个,listControl【1】) |
| | | var btnAutoLine = new NormalViewControl(72, 12, true);
|
| | | btnAutoLine.X = Application.GetRealWidth(346);
|
| | | btnAutoLine.Y = Application.GetRealHeight(896); |
| | | btnAutoLine.BackgroundColor = ZigbeeColor.Current.XMOrange; |
| | | btnAutoLine.Visible = false; |
| | | frameWhiteBack.AddChidren(btnAutoLine);
|
| | | this.listControl.Add(btnAutoLine); |
| | | btnAutoLine.ButtonClickEvent += HandlerAuto; |
| | | |
| | | //新风手动Layout【为了扩大点击范围】 |
| | | var manualFrameLayout = new NormalViewControl(213 + 40, 63 + 80, true); |
| | | manualFrameLayout.X = Application.GetRealWidth(488 - 20); |
| | | manualFrameLayout.Y = Application.GetRealHeight(821 - 20); |
| | | frameWhiteBack.AddChidren(manualFrameLayout); |
| | | manualFrameLayout.ButtonClickEvent += HandlerManual; |
| | | |
| | | //手动(第3个,listControl【2】) |
| | | var btnManual = new NormalViewControl(213, 63, true);
|
| | | btnManual.X = Application.GetRealWidth(488);
|
| | | btnManual.Y = btnAuto.Y; |
| | | btnManual.TextID = R.MyInternationalizationString.Manual; |
| | | btnManual.TextColor = ZigbeeColor.Current.XMGray3; |
| | | btnManual.IsBold = false; |
| | | btnManual.TextAlignment = TextAlignment.Center; |
| | | frameWhiteBack.AddChidren(btnManual);
|
| | | this.listControl.Add(btnManual);
|
| | | btnManual.ButtonClickEvent += HandlerManual;
|
| | | |
| | | //手动下划线(第4个,listControl【3】) |
| | | var btnManualLine = new NormalViewControl(72, 12, true);
|
| | | btnManualLine.X = Application.GetRealWidth(560);
|
| | | btnManualLine.BackgroundColor = ZigbeeColor.Current.XMOrange;
|
| | | btnManualLine.Y = btnAutoLine.Y; |
| | | btnManualLine.Visible = false; |
| | | frameWhiteBack.AddChidren(btnManualLine);
|
| | | this.listControl.Add(btnManualLine); |
| | | btnManualLine.ButtonClickEvent += HandlerManual; |
| | | |
| | | //高风(第5个,listControl【4】) |
| | | var btnHighSpeed = new IconViewControl(81);
|
| | | btnHighSpeed.X = Application.GetRealWidth(207);
|
| | | btnHighSpeed.Y = Application.GetRealHeight(999); |
| | | btnHighSpeed.UnSelectedImagePath = "AC/Fan_Height.png";
|
| | | btnHighSpeed.SelectedImagePath = "AC/Fan_HeightSelected.png"; |
| | | frameWhiteBack.AddChidren(btnHighSpeed);
|
| | | this.listControl.Add(btnHighSpeed);
|
| | | btnHighSpeed.ButtonClickEvent += (sender, e) =>
|
| | | {
|
| | | if (freshAirDev.currentFanStatus == 0) |
| | | { |
| | | return; |
| | | } |
| | | if (freshAirDev.currentFanMode == 5) |
| | | { |
| | | var msgContr = new ShowMsgControl(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AutoModeForbiddenOperate)); |
| | | msgContr.Show(); |
| | | return; |
| | | } |
| | | |
| | | if (!btnHighSpeed.IsSelected) |
| | | { |
| | | this.listControl[4].Enable = false; |
| | | this.SetFanComand(3); |
| | | }
|
| | | };
|
| | |
|
| | | //开关(第6个,listControl【5】)
|
| | | var btnSwitch = new IconViewControl(81); |
| | | btnSwitch.X = Application.GetRealWidth(444);
|
| | | btnSwitch.Y = btnHighSpeed.Y;
|
| | | btnSwitch.UnSelectedImagePath = "AC/OpenOrClose.png";
|
| | | btnSwitch.SelectedImagePath = "AC/OpenOrCloseSelected.png"; |
| | | frameWhiteBack.AddChidren(btnSwitch); |
| | | this.listControl.Add(btnSwitch);
|
| | | btnSwitch.ButtonClickEvent += (sender, e) =>
|
| | | {
|
| | | btnSwitch.IsSelected = !btnSwitch.IsSelected;
|
| | | if (btnSwitch.IsSelected) |
| | | { |
| | | this.listControl[5].Enable = false; |
| | | this.SetFanComand(4); |
| | | } |
| | | else |
| | | { |
| | | this.listControl[5].Enable = false; |
| | | this.SetFanComand(0); |
| | | } |
| | | };
|
| | |
|
| | | //低风(第7个,listControl【6】)
|
| | | var btnLowSpeed = new IconViewControl(81); |
| | | btnLowSpeed.X = Application.GetRealWidth(677); |
| | | btnLowSpeed.Y = btnHighSpeed.Y; |
| | | btnLowSpeed.UnSelectedImagePath = "AC/Fan_Low.png";
|
| | | btnLowSpeed.SelectedImagePath = "AC/Fan_LowSelected.png";
|
| | | frameWhiteBack.AddChidren(btnLowSpeed);
|
| | | this.listControl.Add(btnLowSpeed);
|
| | | btnLowSpeed.ButtonClickEvent += (sender, e) =>
|
| | | { |
| | | if (freshAirDev.currentFanStatus == 0) |
| | | { |
| | | return; |
| | | } |
| | | if (freshAirDev.currentFanMode == 5) |
| | | { |
| | | var msgContr = new ShowMsgControl(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AutoModeForbiddenOperate)); |
| | | msgContr.Show(); |
| | | return; |
| | | } |
| | | if (!btnLowSpeed.IsSelected) |
| | | { |
| | | this.listControl[6].Enable = false; |
| | | this.SetFanComand(1); |
| | | }
|
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 自动事件 |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | private void HandlerAuto(object sender, MouseEventArgs e) |
| | | { |
| | | if (freshAirDev.currentFanStatus == 0) |
| | | { |
| | | return; |
| | | } |
| | | if (freshAirDev.currentFanMode == 5) |
| | | { |
| | | return; |
| | | } |
| | | if (!listControl[0].IsSelected) |
| | | { |
| | | this.listControl[0].Enable = false; |
| | | this.SetFanComand(5); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 手动事件 |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | private void HandlerManual(object sender, MouseEventArgs e) |
| | | { |
| | | if (freshAirDev.currentFanStatus == 0) |
| | | { |
| | | return; |
| | | } |
| | | if (freshAirDev.currentFanMode == 15) |
| | | { |
| | | return; |
| | | } |
| | | if (!this.listControl[2].IsSelected) |
| | | { |
| | | this.listControl[2].Enable = false; |
| | | this.SetFanComand(15); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region ■ 是否获取网关反馈的结果_____________
|
| | | |
| | | /// <summary>
|
| | | /// 检测网关的反馈结果(属性上报的对象:device.DeviceStatusReport)
|
| | | /// </summary>
|
| | | /// <param name="comandDiv">命令区分</param>
|
| | | /// <param name="report">上报数据</param>
|
| | | /// <returns></returns>
|
| | | public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report)
|
| | | {
|
| | | if (comandDiv == ReceiveComandDiv.A设备属性上报)
|
| | | {
|
| | | if (report.DeviceStatusReport.CluterID == 514)
|
| | | {
|
| | | var attriButeList = report.DeviceStatusReport.AttriBute;
|
| | | foreach (var attList in attriButeList)
|
| | | {
|
| | | if (attList.AttributeId == 0)
|
| | | { |
| | | //风速 |
| | | HdlThreadLogic.Current.RunMain(() =>
|
| | | { |
| | | UpdateStatus(); |
| | | }); |
| | | |
| | | //已经接收到网关的反馈 |
| | | return true;
|
| | | } |
| | | }
|
| | | }
|
| | | }
|
| | | this.listControl[0].Enable = true; |
| | | this.listControl[2].Enable = true; |
| | | this.listControl[4].Enable = true; |
| | | this.listControl[5].Enable = true; |
| | | this.listControl[6].Enable = true; |
| | | return false;
|
| | | } |
| | | #endregion |
| | | |
| | | #region ■ 设置方法 |
| | | /// <summary> |
| | | ///命令 |
| | | ///0:Off |
| | | ///1:Low |
| | | ///3:High |
| | | ///4:On |
| | | ///5:Auto |
| | | /// 15:Manual |
| | | /// </summary> |
| | | private void SetFanComand(int command)
|
| | | {
|
| | | //检测是否获取网关反馈的结果,如果网关没有回复,则会弹出消息
|
| | | this.StartCheckResponeResult(this.listControl, (result) =>
|
| | | {
|
| | | //接收到网关回复
|
| | | if (result == true)
|
| | | { |
| | | }
|
| | | }); |
| | | |
| | | switch (command) |
| | | { |
| | | case 0: |
| | | freshAirDev.Close(); |
| | | break; |
| | | case 1: |
| | | freshAirDev.SetLowSpeed(); |
| | | break; |
| | | case 3: |
| | | freshAirDev.SetHighSpeed(); |
| | | break; |
| | | case 4: |
| | | freshAirDev.Open(); |
| | | break; |
| | | case 5: |
| | | freshAirDev.SetAuto(); |
| | | break; |
| | | case 15: |
| | | freshAirDev.SetManual(); |
| | | break; |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region ■ 刷新状态_____________ |
| | | /// <summary> |
| | | /// 刷新状态 |
| | | /// </summary> |
| | | private void UpdateStatus() |
| | | { |
| | | //设置状态文字 |
| | | if (freshAirDev.currentFanStatus == 4)
|
| | | { |
| | | this.listControl[5].Enable = true; |
| | | //打开 |
| | | this.listControl[5].IsSelected = true; |
| | | //设置状态文字 |
| | | this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uOpen1)); |
| | | }
|
| | | if (freshAirDev.currentFanStatus == 0)
|
| | | {
|
| | | //关闭
|
| | | this.listControl[0].TextColor = ZigbeeColor.Current.XMGray3; |
| | | this.listControl[0].IsBold = false; |
| | | this.listControl[1].Visible = false; |
| | | this.listControl[2].TextColor = ZigbeeColor.Current.XMGray3; |
| | | this.listControl[2].IsBold = false; |
| | | this.listControl[3].Visible = false; |
| | | this.listControl[4].IsSelected = false; |
| | | this.listControl[5].IsSelected = false; |
| | | this.listControl[6].IsSelected = false;
|
| | | this.listControl[5].Enable = true; |
| | | //设置状态文字 |
| | | this.SetStatuText(Language.StringByID(R.MyInternationalizationString.Close));
|
| | | return; |
| | | } |
| | | |
| | | //设置模式 |
| | | if (freshAirDev.currentFanMode == 5)
|
| | | { |
| | | this.listControl[0].TextColor = ZigbeeColor.Current.XMGray1; |
| | | this.listControl[0].IsBold = true; |
| | | this.listControl[1].Visible = true; |
| | | this.listControl[2].TextColor = ZigbeeColor.Current.XMGray3; |
| | | this.listControl[2].IsBold = false; |
| | | this.listControl[3].Visible = false; |
| | | this.listControl[0].Enable = true; |
| | | }
|
| | | else if (freshAirDev.currentFanMode == 15)
|
| | | {
|
| | | this.listControl[0].TextColor = ZigbeeColor.Current.XMGray3; |
| | | this.listControl[0].IsBold = false; |
| | | this.listControl[1].Visible = false; |
| | | this.listControl[2].TextColor = ZigbeeColor.Current.XMGray1; |
| | | this.listControl[2].IsBold = true; |
| | | this.listControl[3].Visible = true; |
| | | this.listControl[2].Enable = true; |
| | | } |
| | | |
| | | //设置风速 |
| | | if (freshAirDev.currentFanSpeed == 1)
|
| | | { |
| | | this.listControl[4].IsSelected = false; |
| | | this.listControl[6].IsSelected = true; |
| | | this.listControl[6].Enable = true; |
| | | }
|
| | | else if (freshAirDev.currentFanSpeed == 3)
|
| | | {
|
| | | this.listControl[4].IsSelected = true; |
| | | this.listControl[6].IsSelected = false; |
| | | this.listControl[4].Enable = true; |
| | | } |
| | | } |
| | | #endregion |
| | | } |
| | | } |