From d87400af518ebc9274f4447f06476959c3aa5102 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期二, 14 七月 2020 16:29:42 +0800
Subject: [PATCH] Merge branch 'dev-tzy' into dev-2020xm
---
ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitListForm.cs | 388 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 388 insertions(+), 0 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitListForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitListForm.cs
new file mode 100755
index 0000000..5d48933
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitListForm.cs
@@ -0,0 +1,388 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+using ZigBee.Device;
+
+namespace Shared.Phone.UserCenter.DeviceAirConditioner
+{
+ /// <summary>
+ /// 绌鸿皟鐨勫鍐呮満鍒楄〃鐣岄潰
+ /// </summary>
+ public class IndoorUnitListForm : EditorCommonForm
+ {
+ #region 鈻� 鍙橀噺澹版槑___________________________
+
+ /// <summary>
+ /// 璁惧鍒楄〃
+ /// </summary>
+ private List<CommonDevice> listDevice = null;
+ /// <summary>
+ /// 鎺т欢淇℃伅
+ /// </summary>
+ private Dictionary<string, RowControlInfo> dicControl = new Dictionary<string, RowControlInfo>();
+ /// <summary>
+ /// 婵�娲荤殑璁惧鍦板潃
+ /// </summary>
+ private string actionDeviceKeys = null;
+
+ #endregion
+
+ #region 鈻� 鍒濆鍖朹____________________________
+
+ /// <summary>
+ /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+ /// </summary>
+ /// <param name="i_diviceMac">璁惧Mac鍦板潃</param>
+ public void ShowForm(string i_diviceMac)
+ {
+ this.listDevice = Common.LocalDevice.Current.GetDevicesByMac(i_diviceMac);
+ //璁剧疆澶撮儴淇℃伅
+ base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uIndoorUnitSettion));
+
+ //鍒濆鍖栦腑閮ㄤ俊鎭�
+ this.InitMiddleFrame();
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+ /// </summary>
+ private void InitMiddleFrame()
+ {
+ //娓呯┖bodyFrame
+ this.ClearBodyFrame();
+
+ var listView = new VerticalFrameControl(14);
+ listView.Height = bodyFrameLayout.Height;
+ bodyFrameLayout.AddChidren(listView);
+
+ var frameTemp = new FrameLayout();
+ frameTemp.Height = Application.GetRealHeight(69);
+ listView.AddChidren(frameTemp);
+
+ HdlThreadLogic.Current.RunMainInThread(() =>
+ {
+ for (int i = 0; i < listDevice.Count; i++)
+ {
+ //娣诲姞绌鸿皟琛�
+ this.AddAcControlRow(listView, (AC)listDevice[i]);
+ }
+ var frameTemp2 = new FrameLayout();
+ frameTemp2.Height = Application.GetRealHeight(29);
+ listView.AddChidren(frameTemp2);
+
+ //鏁版嵁鎺ユ敹
+ this.StartReceiveDataEvent();
+ //鍙戦�佽鍙栧睘鎬х殑鍛戒护
+ this.SetReadAttributeComand();
+ });
+ }
+
+ /// <summary>
+ /// 娣诲姞绌鸿皟琛�
+ /// </summary>
+ /// <param name="listView"></param>
+ /// <param name="device"></param>
+ private void AddAcControlRow(VerticalFrameControl listView, AC device)
+ {
+ var rowInfo = new RowControlInfo();
+
+ var frameTable = new FrameLayoutStatuControl();
+ frameTable.UseClickStatu = false;
+ frameTable.Width = Application.GetRealWidth(994);
+ frameTable.Height = Application.GetRealHeight(337);
+ frameTable.BackgroundImagePath = "Item/IndoorUnitGround.png";
+ frameTable.Gravity = Gravity.CenterHorizontal;
+ listView.AddChidren(frameTable);
+
+ //璁惧鍥炬爣
+ var btnIconBack = new FrameLayout();
+ btnIconBack.X = Application.GetRealWidth(46);
+ btnIconBack.Y = Application.GetRealHeight(43);
+ btnIconBack.Height = this.GetPictrueRealSize(112);
+ btnIconBack.Width = this.GetPictrueRealSize(112);
+ btnIconBack.Radius = (uint)this.GetPictrueRealSize(112) / 2;
+ btnIconBack.BackgroundColor = 0xfff5f6fa;
+ frameTable.AddChidren(btnIconBack, ChidrenBindMode.NotBind);
+ rowInfo.btnIconBack = btnIconBack;
+
+ var btnIcon = new IconViewControl(78);
+ btnIcon.Gravity = Gravity.Center;
+ Common.LocalDevice.Current.SetDeviceIconToControl(btnIcon, device);
+ btnIconBack.AddChidren(btnIcon);
+ frameTable.ChangedChidrenBindMode(btnIconBack, ChidrenBindMode.BindEvent);
+ rowInfo.btnIcon = btnIcon;
+
+ //璁惧鍚嶇О
+ var btnDeviceName = new NormalViewControl(700, 60, true);
+ btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(device);
+ btnDeviceName.X = Application.GetRealWidth(193);
+ btnDeviceName.Y = Application.GetRealHeight(45);
+ frameTable.AddChidren(btnDeviceName, ChidrenBindMode.BindEvent);
+ rowInfo.btnDeviceName = btnDeviceName;
+ //鎴块棿
+ var btnRoom = new NormalViewControl(400, 50, true);
+ btnRoom.X = btnDeviceName.X;
+ btnRoom.Y = btnDeviceName.Bottom + Application.GetRealHeight(12);
+ btnRoom.TextSize = 12;
+ btnRoom.TextColor = UserCenterColor.Current.TextGrayColor1;
+ btnRoom.Text = HdlRoomLogic.Current.GetRoomNameByDevice(device);
+ frameTable.AddChidren(btnRoom, ChidrenBindMode.BindEvent);
+ rowInfo.btnRoom = btnRoom;
+ //鎽勬皬搴�
+ var btnValue = new NormalViewControl(300, 60, true);
+ btnValue.Y = Application.GetRealHeight(58);
+ btnValue.X = frameTable.Width - Application.GetRealWidth(300 + 58);
+ btnValue.TextAlignment = TextAlignment.CenterRight;
+ btnValue.TextID = R.MyInternationalizationString.uGetting;
+ frameTable.AddChidren(btnValue, ChidrenBindMode.BindEvent);
+ rowInfo.btnValue = btnValue;
+ //璀﹀憡鍥炬爣
+ var btnWarningIcon = new IconViewControl(69);
+ btnWarningIcon.X = btnIconBack.X;
+ btnWarningIcon.Y = btnRoom.Bottom + Application.GetRealHeight(43);
+ btnWarningIcon.UnSelectedImagePath = "Item/WarningIcon1.png";
+ frameTable.AddChidren(btnWarningIcon, ChidrenBindMode.NotBind);
+ btnWarningIcon.Visible = false;
+ rowInfo.btnWarningIcon = btnWarningIcon;
+ //璀﹀憡淇℃伅
+ var btnWarningMsg = new NormalViewControl(500, 50, true);
+ btnWarningMsg.X = btnWarningIcon.Right + Application.GetRealWidth(12);
+ btnWarningMsg.Y = btnRoom.Bottom + Application.GetRealHeight(55);
+ btnWarningMsg.TextSize = 12;
+ btnWarningMsg.TextColor = UserCenterColor.Current.TextGrayColor1;
+ frameTable.AddChidren(btnWarningMsg, ChidrenBindMode.NotBind);
+ rowInfo.btnWarningMsg = btnWarningMsg;
+ //寮�鍏�
+ var btnSwitch = new IconViewControl(69);
+ btnSwitch.X = frameTable.Width - Application.GetRealWidth(69 + 46);
+ btnSwitch.Y = btnRoom.Bottom + Application.GetRealHeight(43);
+ btnSwitch.UnSelectedImagePath = "Item/Switch.png";
+ btnSwitch.SelectedImagePath = "Item/SwitchSelected.png";
+ frameTable.AddChidren(btnSwitch, ChidrenBindMode.NotBind);
+ rowInfo.btnSwitch = btnSwitch;
+ btnSwitch.ButtonClickEvent += async (sender, e) =>
+ {
+ if (btnSwitch.IsSelected == false)
+ {
+ //鎵撳紑绌鸿皟
+ var result = await HdlDeviceAirConditionerLogic.Current.OpenAirConditioner(device);
+ if (result == false)
+ {
+ return;
+ }
+ btnIcon.IsSelected = true;
+ btnIconBack.BackgroundColor = 0xfffef1ed;
+ }
+ else
+ {
+ //鍏抽棴绌鸿皟
+ var result = await HdlDeviceAirConditionerLogic.Current.CloseAirConditioner(device);
+ if (result == false)
+ {
+ return;
+ }
+ btnIcon.IsSelected = false;
+ btnIconBack.BackgroundColor = 0xfff5f6fa;
+ }
+ btnSwitch.IsSelected = !btnSwitch.IsSelected;
+ };
+
+ frameTable.ButtonClickEvent += (sender, e) =>
+ {
+ this.actionDeviceKeys = Common.LocalDevice.Current.GetDeviceMainKeys(device);
+
+ var form = new IndoorUnitSettionForm();
+ form.AddForm(device);
+ };
+
+ dicControl[Common.LocalDevice.Current.GetDeviceMainKeys(device)] = rowInfo;
+ }
+
+ #endregion
+
+ #region 鈻� 鍙戦�佸懡浠__________________________
+
+ /// <summary>
+ /// 鍙戦�佽鍙栧睘鎬х殑鍛戒护
+ /// </summary>
+ private void SetReadAttributeComand()
+ {
+ HdlThreadLogic.Current.RunThread(() =>
+ {
+ for (int i = 0; i < listDevice.Count; i++)
+ {
+ if (this.Parent == null)
+ {
+ return;
+ }
+ //璇诲彇鐘舵��
+ HdlDeviceAttributeLogic.Current.SendThermostatStatuComand(listDevice[i]);
+ System.Threading.Thread.Sleep(200);
+ }
+ });
+ }
+
+ #endregion
+
+ #region 鈻� 鏁版嵁鎺ユ敹___________________________
+
+ /// <summary>
+ /// 鏁版嵁鎺ユ敹
+ /// </summary>
+ private void StartReceiveDataEvent()
+ {
+ HdlGatewayReceiveLogic.Current.AddAttributeEvent("IndoorUnitListFormEvent", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (device) =>
+ {
+ string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(device);
+ if (dicControl.ContainsKey(mainkeys) == false || device.DeviceStatusReport.CluterID != 513)
+ {
+ return;
+ }
+
+ var rowInfo = dicControl[mainkeys];
+ for (int i = 0; i < device.DeviceStatusReport.AttriBute.Count; i++)
+ {
+ var data = device.DeviceStatusReport.AttriBute[i];
+ if (data.AttributeId == 0)
+ {
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ //瀹ゅ唴娓╁害
+ if (data.AttriButeData == 0)
+ {
+ //0鈩�
+ rowInfo.btnValue.Text = "0.0鈩�";
+ }
+ else if (data.AttriButeData > 32767)
+ {
+ //璐熸暟(鐗规畩澶勭悊)
+ string strValue = (data.AttriButeData - 65536).ToString();
+ //灏忔暟鐐归渶瑕佷竴浣�
+ strValue = strValue.Substring(0, strValue.Length - 1);
+ rowInfo.btnValue.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
+ }
+ else
+ {
+ //灏忔暟鐐归渶瑕佷竴浣�
+ string strValue = data.AttriButeData.ToString();
+ strValue = strValue.Substring(0, strValue.Length - 1);
+ rowInfo.btnValue.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
+ }
+ });
+ }
+ else if (data.AttributeId == 28)
+ {
+ //姝ゅ睘鎬ф弿杩版亽娓╄澶囨澶勪簬鍝妯″紡
+ //Off = 0 Auto = 1 Cool = 3 Heat = 4 FanOnly = 7 Dry = 8
+ if (data.AttriButeData != 0)
+ {
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ rowInfo.btnSwitch.IsSelected = true;
+ rowInfo.btnIcon.IsSelected = true;
+ rowInfo.btnIconBack.BackgroundColor = 0xfffef1ed;
+ });
+ }
+ }
+ else if (data.AttributeId == 4097)
+ {
+ //42:闇�瑕佹竻娲楁护缃�
+ if (data.AttriButeData == 42)
+ {
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ rowInfo.btnWarningIcon.Visible = true;
+ //璇锋敞鎰忔竻娲楁护缃戝摝
+ rowInfo.btnWarningMsg.TextID = R.MyInternationalizationString.uPleaseClreanACfilter;
+ });
+ }
+ }
+ }
+ });
+ }
+
+ #endregion
+
+ #region 鈻� 鐣岄潰鍏抽棴___________________________
+
+ /// <summary>
+ /// 鐣岄潰鍏抽棴
+ /// </summary>
+ public override void CloseFormBefore()
+ {
+ HdlGatewayReceiveLogic.Current.RemoveEvent("IndoorUnitListFormEvent");
+
+ base.CloseFormBefore();
+ }
+
+ #endregion
+
+ #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________
+
+ /// <summary>
+ /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠�
+ /// </summary>
+ public override int FormActionAgainEvent()
+ {
+ if (this.actionDeviceKeys != null && dicControl.ContainsKey(this.actionDeviceKeys) == true)
+ {
+ //鍒锋柊璁惧淇℃伅
+ var device = Common.LocalDevice.Current.GetDevice(this.actionDeviceKeys);
+ if (device != null)
+ {
+ var contr = dicControl[this.actionDeviceKeys];
+ contr.btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(device);
+ contr.btnRoom.Text = HdlRoomLogic.Current.GetRoomNameByDevice(device);
+ }
+ }
+ this.actionDeviceKeys = null;
+
+ return 1;
+ }
+
+ #endregion
+
+ #region 鈻� 缁撴瀯浣揰____________________________
+
+ /// <summary>
+ /// 琛屾暟鎹�
+ /// </summary>
+ private class RowControlInfo
+ {
+ /// <summary>
+ /// 璁惧鍚嶅瓧
+ /// </summary>
+ public NormalViewControl btnDeviceName = null;
+ /// <summary>
+ /// 璁惧鎴块棿
+ /// </summary>
+ public NormalViewControl btnRoom = null;
+ /// <summary>
+ /// 璁惧鍥炬爣鑳屾櫙
+ /// </summary>
+ public FrameLayout btnIconBack = null;
+ /// <summary>
+ /// 璁惧鍥炬爣
+ /// </summary>
+ public IconViewControl btnIcon = null;
+ /// <summary>
+ /// 鎽勬皬搴�
+ /// </summary>
+ public NormalViewControl btnValue = null;
+ /// <summary>
+ /// 璀﹀憡鍥炬爣
+ /// </summary>
+ public IconViewControl btnWarningIcon = null;
+ /// <summary>
+ /// 璀﹀憡淇℃伅
+ /// </summary>
+ public NormalViewControl btnWarningMsg = null;
+ /// <summary>
+ /// 寮�鍏�
+ /// </summary>
+ public IconViewControl btnSwitch = null;
+ }
+
+ #endregion
+ }
+}
--
Gitblit v1.8.0