From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期二, 30 八月 2022 09:37:38 +0800 Subject: [PATCH] 合并了IOS的代码 --- ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs | 1059 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 901 insertions(+), 158 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs old mode 100755 new mode 100644 index 6e1ff95..20b9eea --- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.Threading.Tasks; using Shared.Common; +using Shared.Phone.UserCenter.Device.Bind; +using Shared.Phone.UserCenter.DeviceBind; using ZigBee.Device; namespace Shared.Phone.UserCenter.Device @@ -20,7 +22,7 @@ /// <summary> /// 鍒楄〃鎺т欢 /// </summary> - private VerticalListControl listview = null; + private FrameListControl listview = null; /// <summary> /// 璁惧鐨勮澶囩被鍨� /// </summary> @@ -33,8 +35,34 @@ /// 涓ぎ绌鸿皟鐨勭増鏈帶浠� /// </summary> private NormalViewControl btnAirConditionerVersion = null; - - #endregion + /// <summary> + /// 绠�绾﹀鍔熻兘闈㈡澘缁戝畾鐨勬俯搴︾洰鏍囧悕瀛� + /// </summary> + private string bindTemperatureName = string.Empty; + /// <summary> + /// 绠�绾﹀鍔熻兘闈㈡澘缁戝畾鐨勬箍搴︾洰鏍囧悕瀛� + /// </summary> + private string bindHumidityName = string.Empty; + /// <summary> + /// 绠�绾﹀鍔熻兘闈㈡澘缁戝畾琚粦鐩爣鏄俯搴� + /// </summary> + private CommonDevice bindTemperatureDev; + /// <summary> + /// 绠�绾﹀鍔熻兘闈㈡澘缁戝畾琚粦鐩爣鏄箍搴� + /// </summary> + private CommonDevice bindHumidityDev; + /// <summary> + /// 绠�绾﹂潰鏉垮綋鍓峂ac + /// </summary> + private string deviceMacTemp = string.Empty; + // <summary> + /// 绠�绾﹀鍔熻兘闈㈡澘涓缁戝畾鐨勬俯婀垮害鐩爣鍒楄〃 + /// </summary> + private List<BindObj.BindListResponseObj> bindList = new List<BindObj.BindListResponseObj>(); + /// <summary> + /// 绠�绾﹀鍔熻兘闈㈡澘鐨勬帴杩戞劅搴旀暟鎹� + private Panel.PanelProximitySensorInfo proximitySensorsInfo = new Panel.PanelProximitySensorInfo(); + #endregion #region 鈻� 鍒濆鍖朹____________________________ @@ -45,8 +73,13 @@ public void ShowForm(string deviceMac) { this.listNewDevice = Common.LocalDevice.Current.GetDevicesByMac(deviceMac); - + if (listNewDevice.Count == 0) + { + //閽堝鍗曠函鍙湁涓�涓�200绔偣鐨勮澶� + listNewDevice.Add(Common.LocalDevice.Current.GetOTADevice(deviceMac)); + } this.listDeviceType.Clear(); + deviceMacTemp = deviceMac; foreach (var device in listNewDevice) { //鏀堕泦璁惧绫诲瀷 @@ -56,7 +89,7 @@ this.deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listNewDevice); //璁剧疆鏍囬淇℃伅 - base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDeviceInfo)); + base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDeviceSettion)); //鍒濆鍖栧彸涓婅鑿滃崟 this.InitTopRightMenu(); @@ -66,6 +99,20 @@ //閲嶆柊鑾峰彇纭欢淇℃伅 this.RefreshHardFirmwareInfo(); + + //绠�绾﹀鍔熻兘闈㈡澘鑾峰彇缁戝畾鐩爣鐨勬樉绀� + if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction) + { + //绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧淇℃伅 + var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62); + if (dev != null) + { + var key = new ZigBee.Device.Panel(); + key.DeviceAddr = deviceMac; + key.CurrentGateWayId = dev.CurrentGateWayId; + InitBindInfo(key); + } + } } /// <summary> @@ -76,21 +123,26 @@ //娓呯┖bodyFrame this.ClearBodyFrame(); + var listBackControl = new VerticalFrameControl(); + listBackControl.Height = bodyFrameLayout.Height; + bodyFrameLayout.AddChidren(listBackControl); + //鍒濆鍖栨甯� var tableContr = new InformationEditorControl(); - this.listview = tableContr.InitControl(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 369, 1368); + this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 1368); //鍥剧墖 var btnPic = new DeviceInfoIconControl(); btnPic.Y = Application.GetRealHeight(92); btnPic.Gravity = Gravity.CenterHorizontal; - bodyFrameLayout.AddChidren(btnPic); + listBackControl.frameTable.AddChidren(btnPic); btnPic.InitControl(listNewDevice[0]); //璁惧澶囨敞 string caption = Language.StringByID(R.MyInternationalizationString.uDeviceNote); string deviceName = Common.LocalDevice.Current.GetDeviceMacName(listNewDevice[0]); var btnNote = new FrameCaptionInputControl(caption, deviceName, listview.rowSpace / 2); + btnNote.txtInput.MaxByte = 48;//闄愬埗鍙兘杈撳叆48涓瓧鑺� listview.AddChidren(btnNote); btnNote.InitControl(); //鍒掔嚎 @@ -104,6 +156,11 @@ } if (oldName != btnNote.Text) { + //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈� + if (Common.Config.Instance.Home.IsShowTemplate == true) + { + return; + } //淇敼鍚嶅瓧 this.DeviceReName(btnNote.Text, false); } @@ -119,41 +176,65 @@ //鍒掔嚎 btnType.AddBottomLine(); - //鎵�灞炲尯鍩� + //瀹夎浣嶇疆 var rowBeloneArea = new BelongAreaControl(listview.rowSpace / 2); listview.AddChidren(rowBeloneArea); - rowBeloneArea.InitControl(Language.StringByID(R.MyInternationalizationString.uBelongArea), this.listNewDevice); + rowBeloneArea.InitControl(Language.StringByID(R.MyInternationalizationString.uInstallationLocation), this.listNewDevice); //搴曠嚎 rowBeloneArea.AddBottomLine(); + //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈� + if (Common.Config.Instance.Home.IsShowTemplate == true) + { + rowBeloneArea.CanClick = false; + } var listCheck = new List<string>(); rowBeloneArea.SelectRoomEvent += (roomKeys) => { + //閫夋嫨鏈垎閰嶆椂,娓呯┖ + if (roomKeys == string.Empty) { listCheck = new List<string>(); } foreach (var device in this.listNewDevice) { - var room = Room.CurrentRoom.GetRoomByDevice(device); + if (device is OTADevice) + { + //閽堝鍗曠函鍙湁涓�涓�200绔偣鐨勮澶� + continue; + } + if (roomKeys == string.Empty) + { + //濡傛灉閫夋嫨鐨勬槸鏈垎閰嶏紝鍒欏畠鐨勫叏閮ㄥ洖璺棤鏉′欢鍏ㄩ儴娓呯┖鎴块棿 + HdlRoomLogic.Current.ChangedRoom(device, roomKeys); + continue; + } + var room = HdlRoomLogic.Current.GetRoomByDevice(device); string mainKeys = LocalDevice.Current.GetDeviceMainKeys(device); if (room == null) { //杩欓噷鏈夌偣鐗规畩,濡傛灉鍥炶矾娌℃湁璁剧疆鏈夊尯鍩熺殑鏃跺��,鎵嶈缃� listCheck.Add(mainKeys); - Room.CurrentRoom.ChangedRoom(device, roomKeys); + HdlRoomLogic.Current.ChangedRoom(device, roomKeys); + } + else if (this.deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir + && device.Type == DeviceType.FreshAir) + { + //鏂伴闈㈡澘鐨勬柊椋庤澶囷紝鍒欏尯鍩熻窡鐫�妯″潡涓�璧� + HdlRoomLogic.Current.ChangedRoom(device, roomKeys); } else if (listCheck.Contains(mainKeys) == true) { //濡傛灉杩欎釜鍥炶矾涔嬪墠閮借繕娌℃湁鍖哄煙,鍦ㄦ湰鐣岄潰杩樻病鏈夊叧闂箣鍓�,鍙互鏃犳潯浠堕殢渚垮彉鏇� - Room.CurrentRoom.ChangedRoom(device, roomKeys); + HdlRoomLogic.Current.ChangedRoom(device, roomKeys); } } //淇濆瓨璁惧鎴块棿绱㈠紩 - Common.LocalDevice.Current.SaveRealDeviceRoomId(this.listNewDevice, roomKeys); + HdlRoomLogic.Current.SaveRealDeviceRoomId(this.listNewDevice, roomKeys); }; //娣诲姞鍏ㄩ儴鑿滃崟 this.AddAllMenuRow(); //鍒濆鍖栨甯冨畬鎴� - tableContr.FinishInitControl(bodyFrameLayout, this.listview); + tableContr.FinishInitControl(); tableContr = null; //淇濆瓨 @@ -178,6 +259,19 @@ this.CloseForm(); } }; + //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈� + if (Common.Config.Instance.Home.IsShowTemplate == true) + { + for (int i = 0; i < listview.ChildrenCount; i++) + { + var myRow = listview.GetChildren(i) as FrameRowControl; + if (myRow != null) + { + myRow.UseClickStatu = false; + myRow.CanClick = false; + } + } + } } #endregion @@ -207,6 +301,21 @@ //娣诲姞銆愬鍐呮満璁剧疆銆戣(绌鸿皟涓撶敤) this.AddIndoorUnitSettionRow(); } + else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction) + { + //绠�绾﹀鍔熻兘闈㈡澘 + this.AddIBindRow(deviceMacTemp); + this.AddProximitySensorsRow(deviceMacTemp); + this.AddFunctionSettionRow(); + this.AddHumiditySourceRow(deviceMacTemp); + this.AddTemperatureSensorRow(deviceMacTemp); + this.DataCorrectionRow(deviceMacTemp); + } + else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleEnvironment) + { + //娣诲姞銆愮粦瀹氱洰鏍囥�戣(绠�绾︾幆澧冮潰鏉跨敤) + this.AddSimplePanelSettionRow(); + } else { //娣诲姞銆愬伐浣滄ā寮忋�戣(pir浼犳劅鍣ㄤ笓鐢�) @@ -217,10 +326,28 @@ this.AddDirectionAndLimitRow(); //娣诲姞銆愭墜鎷夋帶鍒躲�戣(寮�鍚堝笜涓撶敤) this.AddHandPullControlRow(); - //娣诲姞銆愭寜閿缃�戣(闈㈡澘涓撶敤) - this.AddPanelSettionRow(); - //娣诲姞銆愬姛鑳借缃�戣 - this.AddFunctionSettionRow(); + //娣诲姞銆愭寜閿缃�戣(鏂规偊涓撶敤) --杩欎釜鏈夊彲鑳藉拰闈㈡澘閲嶅彔 + if (this.AddFangyuePanelSettionRow() == false) + { + //娣诲姞銆愭寜閿缃�戣(闈㈡澘涓撶敤) + this.AddPanelSettionRow(); + } + //妫�娴嬭兘鍚︽樉绀哄姛鑳借缃殑鑿滃崟 + if (this.CheckCanShowFunctionSettionRow() == true) + { + //娣诲姞銆愬姛鑳借缃�戣 + if (deviceEnumInfo.ConcreteType == DeviceConcreteType.Sensor_PMTwoPointFive) + { + //PM浼犳劅鍣� + this.AddFunctionSettionRowPM(); + } + else + { + this.AddFunctionSettionRow(); + } + + } + //娣诲姞銆愬共鎺ョ偣璁剧疆銆戣 this.AddDryContactSettionRow(); } @@ -276,7 +403,7 @@ }; actionNone = () => { - Shared.Phone.UserCenter.DoorLock.DoorLockCommonLayout.SecurityRequest(doorLock, action); + Shared.Phone.UserCenter.DoorLock.DoorLockCommonLayout.SecurityRequest(doorLock); }; HdlCheckLogic.Current.CheckSecondarySecurity(action, actionNone); } @@ -297,7 +424,7 @@ }; actionNone = () => { - Shared.Phone.UserCenter.DoorLock.DoorLockCommonLayout.SecurityRequest(doorLock, action); + Shared.Phone.UserCenter.DoorLock.DoorLockCommonLayout.SecurityRequest(doorLock); }; HdlCheckLogic.Current.CheckSecondarySecurity(action, actionNone); @@ -335,10 +462,21 @@ //搴曠嚎 btnRow.AddBottomLine(); - var doorLock = (ZigBee.Device.DoorLock)listNewDevice[0]; + var doorLock = (ZigBee.Device.DoorLock)listNewDevice[0]; + ///鍊间负绌哄啀鍘昏鍙栨湰鍦� + if (string.IsNullOrEmpty(doorLock.RemoteUnlockPassword)) + { + ///璇诲彇鏈湴杩滅▼寮�閿佸瘑鐮侊紝鐪嬬湅涔嬪墠鏄惁閰嶇疆杩� + doorLock.RemoteUnlockPassword = ReadLocalPassword(); + } if (string.IsNullOrEmpty(doorLock.RemoteUnlockPassword) == false) { btnswitch.IsSelected = true; + } + //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹呯殑璇�,璁╂墍鏈夎彍鍗曢兘涓嶈兘鐐瑰嚮 + if (Common.Config.Instance.Home.IsVirtually == true) + { + btnswitch.CanClick = false; } btnswitch.ButtonClickEvent += async (sender, e) => @@ -386,7 +524,24 @@ }; } } - + /// <summary> + /// 淇濆瓨杩滅▼闂ㄩ攣瀵嗙爜 + /// </summary> + /// <param name="password">瀵嗙爜</param> + public void SaveLocalPassword(string password) { + var bytes = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(password)); + IO.FileUtils.WriteFileByBytes(Config.Instance.HomeId + "_" + Config.Instance.Guid, bytes); + } + /// <summary> + /// 璇诲彇杩滅▼闂ㄩ攣瀵嗙爜 + /// </summary> + /// <returns></returns> + public string ReadLocalPassword() + { + var str = System.Text.Encoding.UTF8.GetString(IO.FileUtils.ReadFile(Config.Instance.HomeId + "_" + Config.Instance.Guid)); + //Newtonsoft.Json.JsonConvert.DeserializeObject<瀵瑰儚>(str); + return str; + } #endregion #region 鈻� 闂ㄩ攣鏃堕棿(闂ㄩ攣)_____________________ @@ -442,7 +597,7 @@ #region 鈻� 鎸夐敭璁剧疆(闈㈡澘)_____________________ /// <summary> - /// 娣诲姞銆愭寜閿缃�戣 + /// 娣诲姞銆愭寜閿缃�戣(闈㈡澘) /// </summary> private void AddPanelSettionRow() { @@ -465,6 +620,83 @@ var form = new DevicePanel.PanelButtonSettionForm(); form.AddForm(listNewDevice[0]); }; + } + + #region 鈻� 绠�绾︾幆澧�(闈㈡澘)_____________________ + + /// <summary> + /// 娣诲姞銆愭寜閿缃�戣绠�绾︾幆澧�(闈㈡澘) + /// </summary> + private void AddSimplePanelSettionRow() + { + //鎸夐敭璁剧疆 + string caption = Language.StringByID(R.MyInternationalizationString.uPanelSettion); + var btnFunction = new FrameRowControl(listview.rowSpace / 2); + listview.AddChidren(btnFunction); + btnFunction.AddLeftCaption(caption, 600); + //鍚戝彸鍥炬爣 + btnFunction.AddRightArrow(); + //搴曠嚎 + btnFunction.AddBottomLine(); + btnFunction.ButtonClickEvent += (sender, e) => + { + //绠�绾︾幆澧冮潰鏉跨殑鎸夐敭閰嶇疆 + var form = new DevicePanel.PanelSettionWithSourceForm(); + form.AddForm(listNewDevice[0]); + }; + } + + #endregion + + #endregion + + #region 鈻� 鎸夐敭璁剧疆(鏂规偊)_____________________ + + /// <summary> + /// 娣诲姞銆愭寜閿缃�戣(鏂规偊) + /// </summary> + private bool AddFangyuePanelSettionRow() + { + if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueTwo + || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFour + || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEight + || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment + || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir) + { + //鎸夐敭璁剧疆 + string caption = Language.StringByID(R.MyInternationalizationString.uPanelSettion); + var btnFunction = new FrameRowControl(listview.rowSpace / 2); + listview.AddChidren(btnFunction); + btnFunction.AddLeftCaption(caption, 600); + //鍚戝彸鍥炬爣 + btnFunction.AddRightArrow(); + //搴曠嚎 + btnFunction.AddBottomLine(); + btnFunction.ButtonClickEvent += (sender, e) => + { + if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueTwo + || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFour + || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEight) + { + //鏂规偊鎸夐敭闈㈡澘[鍗曞紑鍙屾帶/鍙屽紑鍥涙帶/鍥涘紑鍏帶]閰嶇疆 + var form = new DevicePanel.PanelFangyueButtonSettionForm(); + form.AddForm(listNewDevice[0]); + } + else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir) + { + //鏂规偊鐜闈㈡澘鐨勬寜閿厤缃�&鏂规偊鏂伴闈㈡澘鐨勬寜閿厤缃� + var form = new DevicePanel.PanelSettionWithSourceForm(); + form.AddForm(listNewDevice[0]); + } + else + { + var form = new DevicePanel.PanelFangyueButtonSettionForm(); + form.AddForm(listNewDevice[0]); + } + }; + return true; + } + return false; } #endregion @@ -575,6 +807,53 @@ //鍙湁鍥炶矾鏁板ぇ浜�1鎵嶈兘鏈夎繖涓彍鍗� if (Common.LocalDevice.Current.GetDevicesCountByMac(listNewDevice[0].DeviceAddr) == 1) { + //绌烘皵璐ㄩ噺浼犳劅鍣ㄥ拰鏂伴灏忔ā鍧楀彧鏈変竴涓洖璺紝浣嗚姹傛柊椋庡皬妯″潡鐨勬柊椋庢湁鍔熻兘璁剧疆 + //鏅捐。鏋堕粯璁ゅ彧瀛樺偍绗竴鍥炶矾锛屽叾浠栧洖璺杩囨护浜� + bool isSpecial = false; + if (deviceEnumInfo.ConcreteType == DeviceConcreteType.Relay_FangyueFreshAirModul || + deviceEnumInfo.ConcreteType == DeviceConcreteType.AirQualitySensor) + { + isSpecial = true; + } + if (deviceEnumInfo.ConcreteType == DeviceConcreteType.Airer) + { + isSpecial = true; + var dev = listNewDevice[0]; + //鏅捐。鏋堕粯璁ゅ彧瀛樺偍绗竴鍥炶矾锛屽叾浠栧洖璺湪鍔熻兘鐣岄潰闇�瑕佽鍙栨椂闂达紝鎵�浠ユ彁鍓嶄竴涓晫闈㈣幏鍙� + //绗竴鐗堟椂闂村姛鑳界敱浜庤澶囦笉鏀寔锛屾殏鏃跺幓鎺夛紝鍚庢湡鎵嶅姞涓� + //for (int i = 3; i < 6; i++) + //{ + // //娉ㄦ剰锛岃。鏋朵腑鐨勭姸鎬佺敱涓嶅悓绔偣鑾峰彇 + // //鍥炶矾3:璇诲彇椋庡共寮�鍏崇姸鎬佸拰鏃堕棿鍊� + // //鍥炶矾4:璇诲彇鐑樺共寮�鍏崇姸鎬佸拰鏃堕棿鍊� + // //鍥炶矾5:璇诲彇娑堟瘨寮�鍏崇姸鎬佸拰鏃堕棿鍊� + // HdlDeviceAttributeLogic.Current.SendAirerComand(dev, i); + //} + } + if (!isSpecial) + { + return; + } + } + if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment + || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir) + { + //鐜闈㈡澘娌℃湁鍔熻兘璁剧疆 + return; + } + + //2020.03.06鏂拌拷鍔狅細濡傛灉鍏ㄩ儴閮芥槸骞叉帴鐐圭殑璇�,涔熶笉鑳芥湁杩欎釜涓滆タ + int dryContactCount = 0; + for (int i = 0; i < listNewDevice.Count; i++) + { + if (listNewDevice[i].Type == DeviceType.OnOffSwitch) + { + dryContactCount++; + } + } + if (listNewDevice.Count == dryContactCount) + { + //杩欎釜璁惧鍏ㄦ槸骞叉帴鐐� return; } @@ -589,8 +868,30 @@ btnFunction.AddBottomLine(); btnFunction.ButtonClickEvent += (sender, e) => { + //鏂规偊闈㈡澘 + if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueTwo + || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFour + || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEight) + { + var form = new DevicePanel.PanelFangyueFunctionSettionForm(); + form.AddForm(listNewDevice[0], deviceEnumInfo); + } + //绠�绾﹀鍔熻兘闈㈡澘鐨勬寜閿厤缃� + else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction) + { + foreach (var dev in listNewDevice) + { + if (dev.Type == DeviceType.OnOffOutput && dev.DeviceEpoint == 62) + { + var form = new DeviceFunctionSettionForm(); + form.AddForm(dev, true); + break; + } + } + + } //娌充笢鐨勯潰鏉胯澶� - if (deviceEnumInfo.BeloneType == DeviceBeloneType.A鎸夐敭闈㈡澘 && deviceEnumInfo.IsHdlDevice == true) + else if (deviceEnumInfo.BeloneType == DeviceBeloneType.A鎸夐敭闈㈡澘 && deviceEnumInfo.IsHdlDevice == true) { var form = new DevicePanel.PanelFunctionSettionForm(); form.AddForm(listNewDevice[0]); @@ -600,6 +901,27 @@ var form = new DeviceFunctionSettionForm(); form.AddForm(listNewDevice[0], false); } + }; + } + + /// <summary> + /// 娣诲姞浼犳劅鍣ㄣ�愬姛鑳借缃�戣 + /// </summary> + private void AddFunctionSettionRowPM() + { + //鍔熻兘璁剧疆 + string caption = Language.StringByID(R.MyInternationalizationString.uFunctionSettingUp); + var btnFunction = new FrameRowControl(listview.rowSpace / 2); + listview.AddChidren(btnFunction); + btnFunction.AddLeftCaption(caption, 600); + //鍚戝彸鍥炬爣 + btnFunction.AddRightArrow(); + //搴曠嚎 + btnFunction.AddBottomLine(); + btnFunction.ButtonClickEvent += (sender, e) => + { + var form = new DeviceFunctionSettionForm(); + form.AddForm(listNewDevice[0], false); }; } @@ -677,15 +999,29 @@ var btnSwitch = btnFunction.AddMostRightSwitchIcon(); //搴曠嚎 btnFunction.AddBottomLine(); - btnSwitch.ButtonClickEvent += async (sender, e) => + btnSwitch.ButtonClickEvent += (sender, e) => { //鍒囨崲妯″紡 - var result = await HdlDeviceCurtainLogic.Current.SetHandPullControl(deviceCurtain, !btnSwitch.IsSelected); + bool statu = !btnSwitch.IsSelected; + var result = HdlDeviceCurtainLogic.Current.SetHandPullControl(deviceCurtain, statu); if (result == true) { - btnSwitch.IsSelected = !btnSwitch.IsSelected; + btnSwitch.IsSelected = statu; } }; + //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈� + if (Common.Config.Instance.Home.IsShowTemplate == true) + { + btnSwitch.CanClick = false; + btnSwitch.IsSelected = TemplateData.TemplateDeviceDataLogic.Current.GetCurtainHandPullControl(deviceCurtain); + return; + } + //濡傛灉鏄櫄鎷熶綇瀹� + if (Common.Config.Instance.Home.IsVirtually == true) + { + btnSwitch.IsSelected = TemplateData.TemplateDeviceDataLogic.Current.GetCurtainHandPullControl(deviceCurtain); + return; + } //娣诲姞灞炴�т笂鎶ョ洃鍚� string mainkeys = LocalDevice.Current.GetDeviceMainKeys(this.listNewDevice[0]); @@ -724,10 +1060,12 @@ /// </summary> private void AddIndoorUnitSettionRow() { - if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.AirConditioner_ZbGateway) + if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.AirConditioner_ZbGateway + || this.listNewDevice[0] is OTADevice)//杩藉姞锛氬崟绾彧鏈�200绔偣鐨勮瘽锛屼笉鏄剧ず杩欎釜鑿滃崟 { return; } + //瀹ゅ唴鏈鸿缃� string caption = Language.StringByID(R.MyInternationalizationString.uIndoorUnitSettion); var btnFunction = new FrameRowControl(listview.rowSpace / 2); @@ -743,7 +1081,377 @@ form.AddForm(listNewDevice[0].DeviceAddr); }; } + #endregion + #region 鈻� 绠�绾﹀鍔熻兘闈㈡澘鐢╛__________________ + /// <summary> + /// 娣诲姞銆愮粦瀹氱洰鏍囥�戣 + /// </summary> + private void AddIBindRow(string deviceMac) + { + string bindTargets = Language.StringByID(R.MyInternationalizationString.uBindTargets); + var btnBindTargets = new FrameRowControl(listview.rowSpace / 2); + listview.AddChidren(btnBindTargets); + btnBindTargets.AddLeftCaption(bindTargets, 600); + //鍚戝彸鍥炬爣 + btnBindTargets.AddRightArrow(); + //搴曠嚎 + btnBindTargets.AddBottomLine(); + btnBindTargets.ButtonClickEvent += (sender, e) => + { + var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 32);//绠�绾﹂潰鏉块殢渚夸竴涓寜閿潵鑾峰彇璁惧 + if (dev != null) + { + var curControlDev = dev as Panel; + var simpleMutilfunctionTargetsPage = new Shared.Phone.UserCenter.DeviceBind.PanelSimpleMutilfunctionTargetsForm(curControlDev); + Shared.Phone.UserView.HomePage.Instance.AddChidren(simpleMutilfunctionTargetsPage); + Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; + simpleMutilfunctionTargetsPage.Show(); + } + }; + } + + #region 鈻� 鎺ヨ繎鎰熷簲___________________________ + + /// <summary> + /// 鎺ヨ繎鎰熷簲琛� + /// </summary> + private void AddProximitySensorsRow(string deviceMac) + { + string proximity = Language.StringByID(R.MyInternationalizationString.ProximitySensors); + var proximitySensors = new FrameRowControl(listview.rowSpace / 2); + listview.AddChidren(proximitySensors); + proximitySensors.AddLeftCaption(proximity, 400); + + //鎺ヨ繎鎰熷簲 + proximitySensors.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.ProximitySensors), 400); + //寮�鍏虫帶浠� + var btnSwitch = proximitySensors.AddMostRightSwitchIcon(); + //搴曠嚎 + proximitySensors.AddBottomLine(); + + btnSwitch.ButtonClickEvent +=async (sender, e) => + { + btnSwitch.IsSelected = !btnSwitch.IsSelected; + proximitySensorsInfo.enable = btnSwitch.IsSelected; + + //绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧淇℃伅 + var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62); + if (dev != null) + { + var key = new ZigBee.Device.Panel(); + key.DeviceAddr = deviceMac; + key.CurrentGateWayId = dev.CurrentGateWayId; + SetProximitySensor(key); + } + }; + if (proximitySensorsInfo.enable == true) + { + btnSwitch.IsSelected = true; + } + } + #endregion + + #region 鈻� 鏁版嵁鐭_________________________ + /// <summary> + /// 鏁版嵁鐭琛� + /// </summary> + private void DataCorrectionRow(string deviceMac) + { + //鏁版嵁鐭 + var rowLight = new FrameRowControl(listview.rowSpace / 2); + listview.AddChidren(rowLight); + rowLight.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.DataCorrection), 600); + //搴曠嚎 + rowLight.AddBottomLine(); + //鍙崇澶� + rowLight.AddRightArrow(); + rowLight.ButtonClickEvent += (sender, e) => + { + var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62);//绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧 + var device = new CommonDevice(); + if (dev != null) + { + device.CurrentGateWayId = dev.CurrentGateWayId; + } + device.DeviceAddr = deviceMac; + device.DeviceEpoint = 65; + var form = new Shared.Phone.UserCenter.DevicePanel.DataCorrectionForm(); + form.AddForm(device); + }; + } + #endregion + + /// <summary> + /// 婀垮害鏉ユ簮琛� + /// </summary> + private void AddHumiditySourceRow(string deviceMac) + { + //婀垮害 + var rowHumidity = new FrameRowControl(listview.rowSpace / 2); + listview.AddChidren(rowHumidity); + rowHumidity.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.HumiditySource), 600); + //搴曠嚎 + rowHumidity.AddBottomLine(); + //鍙崇澶� + rowHumidity.AddRightArrow(); + var msg = Language.StringByID(R.MyInternationalizationString.nothing); + if (!string.IsNullOrEmpty(bindHumidityName)) + { + msg = bindHumidityName; + } + var btnHumidityStatu = rowHumidity.AddMostRightView(msg, 700); + rowHumidity.ButtonClickEvent += (sender, e) => + { + + var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62);//绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧 + var device = new CommonDevice(); + if (dev != null) + { + device.CurrentGateWayId = dev.CurrentGateWayId; + } + device.Type = DeviceType.OnOffSwitch; + device.DeviceAddr = deviceMac; + device.DeviceEpoint = 1;//鑳界粦瀹氭箍搴︾殑鍥炶矾 + var paneTargetsBaseFormp = new PaneTargetsBaseForm(device, bindHumidityDev, BindInfo.BindType.Humidity); + Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp); + Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; + paneTargetsBaseFormp.Show(); + paneTargetsBaseFormp.actionHumidityTarget += (bindName) => + { + HdlThreadLogic.Current.RunMain(() => + { + if (string.IsNullOrEmpty(bindName)) + { + btnHumidityStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing); + bindHumidityDev = null; + } + else + { + btnHumidityStatu.Text = bindName; + } + }); + }; + }; + } + + /// <summary> + /// 娓╁害鏉ユ簮琛� + /// </summary> + private void AddTemperatureSensorRow(string deviceMac) + { + //娓╁害鏉ユ簮 + var rowTemPerature = new FrameRowControl(listview.rowSpace / 2); + listview.AddChidren(rowTemPerature); + rowTemPerature.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.TemperatureSource), 600); + //搴曠嚎 + rowTemPerature.AddBottomLine(); + //鍙崇澶� + rowTemPerature.AddRightArrow(); + var msg = Language.StringByID(R.MyInternationalizationString.nothing); + if (!string.IsNullOrEmpty(bindTemperatureName)) + { + msg = bindTemperatureName; + } + var btnTemperatureStatu = rowTemPerature.AddMostRightView(msg, 700); + rowTemPerature.ButtonClickEvent += (sender, e) => + { + var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62);//绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧 + var device = new CommonDevice(); + if (dev != null) + { + device.CurrentGateWayId = dev.CurrentGateWayId; + } + device.Type = DeviceType.OnOffSwitch; + device.DeviceAddr = deviceMac; + device.DeviceEpoint = 1;//鑳界粦瀹氭俯搴︾殑鍥炶矾 + var paneTargetsBaseFormp = new PaneTargetsBaseForm(device, bindTemperatureDev, BindInfo.BindType.Temperature); + Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp); + Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; + paneTargetsBaseFormp.Show(); + paneTargetsBaseFormp.actionTemperatureTarget += (bindName) => + { + HdlThreadLogic.Current.RunMain(() => + { + if (string.IsNullOrEmpty(bindName)) + { + btnTemperatureStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing); + bindTemperatureDev = null; + } + else + { + btnTemperatureStatu.Text = bindName; + } + }); + }; + }; + } + + /// <summary> + ///鍒濆鍖栨暟鎹� + /// </summary> + void InitBindInfo(CommonDevice curControlDev) + { + System.Threading.Tasks.Task.Run(async () => + { + try + { + Application.RunOnMainThread(() => + { + CommonPage.Loading.Start(""); + }); + //璇绘俯婀垮害鏁版嵁 + curControlDev.DeviceEpoint = 1; + var result = await GetBindName(curControlDev); + if (!result) + { + Application.RunOnMainThread(() => + { + new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "5007_2" + ")", Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance); + }); + return; + } + + //2銆佽幏璁惧鎺ヨ繎鎰熷簲鍒濆鏁版嵁 + //鎺ヨ繎鎰熷簲(浠栦滑璇撮殢渚挎嬁涓�璺洖璺氨琛屼簡) + proximitySensorsInfo = await HdlDevicePanelLogic.Current.GetDeviceProximitySensorsSettion(curControlDev); + if (proximitySensorsInfo == null) + { + proximitySensorsInfo = new Panel.PanelProximitySensorInfo(); + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(ShowReLoadMode.YES); + return ; + } + } + catch (Exception ex) + { + var mess = ex.Message; + } + finally + { + Application.RunOnMainThread(() => + { + //鍒濆鍖栧彸涓婅鑿滃崟 + this.InitTopRightMenu(); + //鍒濆鍖栦腑閮ㄦ帶浠� + this.InitMiddleFrame(); + CommonPage.Loading.Hide(); + }); + } + }); + } + + /// <summary> + /// 鑾峰彇缁戝畾鐨勬俯婀垮害鐩爣 + /// </summary> + /// <param name="curControlDev"></param> + /// <returns></returns> + private async System.Threading.Tasks.Task<bool> GetBindName(CommonDevice curControlDev) + { + bool result = false; + var panelBindListRes = HdlDeviceBindLogic.Current.GetDeviceBindAsync(curControlDev); + if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null) + { + bindList = panelBindListRes.getAllBindResponseData.BindList; + foreach (var bDev in bindList) + { + var device = Common.LocalDevice.Current.GetDevice(bDev.BindMacAddr, bDev.BindEpoint); + if (device == null) + { + continue; + } + //鑾峰彇璁惧绫诲瀷鐨� + var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device }); + if (device.Type == DeviceType.TemperatureSensor) + { + var bD = device as TemperatureSensor; + if (bD.SensorDiv == 1 && bDev.BindCluster == 1026) + { + bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device); + bindTemperatureDev = device; + } + if (bD.SensorDiv == 2 && bDev.BindCluster == 1029) + { + bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device); + bindHumidityDev = device; + } + + //绌烘皵璐ㄩ噺浼犳劅鍣� + if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.AirQualitySensor) + { + if (bDev.BindCluster == 1026) + { + bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor); + bindTemperatureDev = device; + } + if (bDev.BindCluster == 1029) + { + bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor); + bindHumidityDev = device; + } + } + } + if (device.Type == DeviceType.FreshAirHumiditySensor) + { + bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device); + bindHumidityDev = device; + } + else if (device.Type == DeviceType.PMSensor) + { + if (bDev.BindCluster == 1026) + { + bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor); + bindTemperatureDev = device; + } + if (bDev.BindCluster == 1029) + { + bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor); + bindHumidityDev = device; + } + } + } + result = true; + } + return result; + } + + #region 鈻� 璁剧疆鏁版嵁___________________________ + + /// <summary> + /// 璁剧疆闈㈡澘鎺ヨ繎鎰熷簲鏁版嵁 + /// </summary> + private void SetProximitySensor(CommonDevice curControlDev) + { + System.Threading.Tasks.Task.Run(async () => + { + try + { + Application.RunOnMainThread(() => + { + CommonPage.Loading.Start(""); + }); + //鎺ヨ繎鎰熷簲(鎻愪緵璁惧鐨勫悓浜嬭闅忎究涓�涓洖璺氨琛�) + var result = await HdlDevicePanelLogic.Current.SetProximitySensorStatus(curControlDev, proximitySensorsInfo.enable); + if (result == false) + { + return; + } + } + catch (Exception ex) + { + var mess = ex.Message; + } + finally + { + Application.RunOnMainThread(() => + { + CommonPage.Loading.Hide(); + }); + } + }); + } + + #endregion #endregion #region 鈻� 鍔熻兘绫诲瀷(绌烘皵寮�鍏充笓鐢�)_____________ @@ -753,90 +1461,28 @@ /// </summary> private void AddAirSwitchFunctionTypeRow() { - if (this.deviceEnumInfo.BeloneType != DeviceBeloneType.A鏅鸿兘绌哄紑) + //2020.04.28鍙樻洿:鏈変釜鍒澶囧畠闄や簡缁х數鍣ㄥ洖璺紝浠�涔堥兘娌℃湁浜�, + //杩欎釜鏃跺�欎篃瑕佺幇瀹炲嚭鏉� + if (this.listNewDevice.Count != 1) { - //涓嶆槸绌烘皵寮�鍏� return; } - - //鍔熻兘绫诲瀷 - string caption = Language.StringByID(R.MyInternationalizationString.uFunctionType); - var DfunctionType = this.listNewDevice[0].DfunctionType; - - //鍔熻兘绫诲瀷鐨勭炕璇戝悕瀛� - int nowSelectNo = 1; - string strType = string.Empty; - if (DfunctionType == DeviceFunctionType.A鐏厜) + if (this.listNewDevice[0].Type != DeviceType.OnOffOutput + && this.listNewDevice[0].Type != DeviceType.AirSwitch) { - strType = Language.StringByID(R.MyInternationalizationString.uLight); - nowSelectNo = 1; + return; } - else if (DfunctionType == DeviceFunctionType.A寮�鍏�) - { - strType = Language.StringByID(R.MyInternationalizationString.uSwitch); - nowSelectNo = 0; - } - else if (DfunctionType == DeviceFunctionType.A鎻掑骇) - { - strType = Language.StringByID(R.MyInternationalizationString.uSocket1); - nowSelectNo = 2; - } - - var btnFunction = new FrameCaptionViewControl(caption, strType, listview.rowSpace / 2); - btnFunction.UseClickStatu = true; - listview.AddChidren(btnFunction); - btnFunction.InitControl(); + //鑷畾涔夊姛鑳界被鍨嬫帶浠� + var rowFunction = new DeviceFunctionTypeRowControl(this.listNewDevice[0], listview.rowSpace / 2); + listview.AddChidren(rowFunction); + rowFunction.InitControl(); //搴曠嚎 - btnFunction.AddBottomLine(); - //鍙崇澶� - btnFunction.AddRightArrow(); - btnFunction.ButtonClickEvent += (sender, e) => + rowFunction.AddBottomLine(); + //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈� + if (Common.Config.Instance.Home.IsShowTemplate == true) { - //鏄剧ず鍒楄〃 - var listText = new List<string>(); - listText.Add(Language.StringByID(R.MyInternationalizationString.uSwitch));//寮�鍏� - listText.Add(Language.StringByID(R.MyInternationalizationString.uLight));//鐏厜 - listText.Add(Language.StringByID(R.MyInternationalizationString.uSocket1));//鎻掑骇 - //鏍囬:閫夋嫨鍔熻兘绫诲瀷 - var title = Language.StringByID(R.MyInternationalizationString.uSelectFunctionType); - - var form = new BottomItemSelectForm(); - form.AddForm(title, listText, nowSelectNo); - form.FinishSelectEvent += (selectNo) => - { - btnFunction.Text = listText[selectNo]; - nowSelectNo = selectNo; - //璁板綍璧峰綋鍓嶉�夋嫨鐨勫姛鑳界被鍨� - if (selectNo == 0) - { - this.listNewDevice[0].DfunctionType = DeviceFunctionType.A寮�鍏�; - if (this.listNewDevice[0].IsCustomizeImage == false) - { - //閲嶆柊璁剧疆鍥剧墖 - this.listNewDevice[0].IconPath = "Device/Switch.png"; - } - } - else if (selectNo == 1) - { - this.listNewDevice[0].DfunctionType = DeviceFunctionType.A鐏厜; - if (this.listNewDevice[0].IsCustomizeImage == false) - { - //閲嶆柊璁剧疆鍥剧墖 - this.listNewDevice[0].IconPath = "Device/Light.png"; - } - } - else - { - this.listNewDevice[0].DfunctionType = DeviceFunctionType.A鎻掑骇; - if (this.listNewDevice[0].IsCustomizeImage == false) - { - //閲嶆柊璁剧疆鍥剧墖 - this.listNewDevice[0].IconPath = "Device/Socket1.png"; - } - } - this.listNewDevice[0].ReSave(); - }; - }; + rowFunction.CanClick = false; + } } #endregion @@ -883,7 +1529,11 @@ listview.AddChidren(rowVersion); rowVersion.AddLeftCaption(caption, 600); //鐗堟湰 - this.btnAirConditionerVersion = rowVersion.AddMostRightView("", 800); + this.btnAirConditionerVersion = rowVersion.AddMostRightView(string.Empty, 900); + if (this.listNewDevice[0] is AC) + { + this.btnAirConditionerVersion.Text = ((AC)this.listNewDevice[0]).AcModelVersion; + } //搴曠嚎 rowVersion.AddBottomLine(); @@ -923,7 +1573,7 @@ btnNewVersion.Visible = false; btnNewVersion.X = Application.GetRealWidth(242); btnNewVersion.Y = Application.GetRealHeight(23); - rowUpDate.AddChidren(btnNewVersion, ChidrenBindMode.BindEventOnly); + rowUpDate.AddChidren(btnNewVersion, ChidrenBindMode.BindEvent); rowUpDate.ButtonClickEvent += (sender, e) => { @@ -937,13 +1587,18 @@ { //涓ぎ绌鸿皟鐨勫崌绾х殑璇濓紝鏄壒娈婄殑 var form = new DeviceAirConditioner.ACZbGatewayUpdateMenuForm(); - form.AddForm((AC)listNewDevice[0], btnNewVersion.Visible); + form.AddForm(listNewDevice[0], btnNewVersion.Visible); } btnNewVersion.Visible = false; }; - //璁剧疆璁惧鐨勭増鏈俊鎭� - this.SetDeviceVersionInfo(btnNewVersion, oTADevice); + //濡傛灉褰撳墠浣忓畢涓嶆槸铏氭嫙浣忓畢 + if (Config.Instance.Home.IsVirtually == false + && Config.Instance.Home.IsShowTemplate == false) + { + //璁剧疆璁惧鐨勭増鏈俊鎭� + this.SetDeviceVersionInfo(btnNewVersion, oTADevice); + } } /// <summary> @@ -953,45 +1608,57 @@ /// <param name="oTADevice">ota璁惧</param> private void SetDeviceVersionInfo(PicViewControl btnNewVersion, OTADevice oTADevice) { - HdlThreadLogic.Current.RunThread(async () => + HdlThreadLogic.Current.RunThread(() => { bool receiveImageInfo = false; //璁剧疆璁惧鍏ㄩ儴鐨勯暅鍍忎俊鎭� - HdlDeviceImageInfoLogic.Current.SetAllImageInfoToOtaDevice(oTADevice, (device, reportData) => + string checkKey = LocalDevice.Current.GetDeviceMainKeys(oTADevice.DeviceAddr, oTADevice.DeviceEpoint); + HdlGatewayReceiveLogic.Current.AddAttributeEvent("SetDeviceVersionInfo", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) => { - receiveImageInfo = true; + if (report.DeviceStatusReport.CluterID == (int)Cluster_ID.Ota) + { + string mainKey = LocalDevice.Current.GetDeviceMainKeys(report.DeviceAddr, report.DeviceEpoint); + if (checkKey == mainKey) + { + //宸茬粡鎺ユ敹寰楀埌 + receiveImageInfo = true; + } + } }); + //鍙戦�佸懡浠� + HdlDeviceImageInfoLogic.Current.SetFirmwareVersionComand(oTADevice); + int count = 5; while (receiveImageInfo == false && count > 0) { //绛夊緟璁惧闀滃儚鐨勫弽棣� - await Task.Delay(300); + System.Threading.Thread.Sleep(300); count--; } //绉婚櫎浜嬩欢 - HdlDeviceImageInfoLogic.Current.RemoveDeviceFirmwareVersionThread(oTADevice); + HdlGatewayReceiveLogic.Current.RemoveEvent("SetDeviceVersionInfo"); oTADevice = Common.LocalDevice.Current.GetOTADevice(listNewDevice[0].DeviceAddr); //娣诲姞鍗囩骇鍥轰欢淇℃伅(鎴愪笉鎴愬姛閮芥棤鎵�璋�) - var result = await HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.ZigbeeDevice, oTADevice.HwVersion.ToString(), oTADevice.ImgTypeId.ToString()); + var result = HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.A璁惧, oTADevice.HwVersion.ToString(), oTADevice.ImgTypeId.ToString()); //鑾峰彇璁惧鏈�鏂扮増鏈� - var deviceFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.ZigbeeDevice, + var deviceFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.A璁惧, oTADevice.HwVersion.ToString(), oTADevice.ImgTypeId.ToString(), oTADevice.ImgVersion); if (deviceFirmware != null && deviceFirmware.FirmwareVersion > oTADevice.ImgVersion) { - Application.RunOnMainThread(() => + HdlThreadLogic.Current.RunMain(() => { if (btnNewVersion != null) { btnNewVersion.Visible = true; } - }); + }, ShowErrorMode.NO); } - }); + }, ShowErrorMode.NO); } #endregion @@ -1002,17 +1669,11 @@ /// 璁惧閲嶅懡鍚� /// </summary> /// <param name="i_deviceName">deviceName.</param> - private async void DeviceReName(string i_deviceName, bool closeForm) + private void DeviceReName(string i_deviceName, bool closeForm) { - //寮�鍚繘搴︽潯 - this.ShowProgressBar(); - //淇敼MAC鍚� string deviceName = i_deviceName.Trim(); - var result = await Common.LocalDevice.Current.ReMacName(this.listNewDevice, deviceName); - //鍏抽棴杩涘害鏉� - this.CloseProgressBar(); - + var result = Common.LocalDevice.Current.ReMacName(this.listNewDevice, deviceName); if (result == false) { return; @@ -1039,6 +1700,11 @@ /// </summary> private void InitTopRightMenu() { + //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈� + if (Common.Config.Instance.Home.IsShowTemplate == true) + { + return; + } var btnIcon = new MostRightIconControl(69, 69); btnIcon.UnSelectedImagePath = "Item/More.png"; topFrameLayout.AddChidren(btnIcon); @@ -1057,17 +1723,17 @@ { //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘(鎷跨鐐规渶灏忕殑閭d釜鍥炶矾鍘诲畾浣�) bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(listNewDevice[0]); - if (this.deviceEnumInfo.BeloneType == DeviceBeloneType.A鏅鸿兘闂ㄩ攣) + + TopRightMenuControl frame = null; + + if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction) { - canTest = false; + frame = new TopRightMenuControl(3, 1); } - else if (this.deviceEnumInfo.BeloneType == DeviceBeloneType.A浼犳劅鍣� - && this.deviceEnumInfo.ConcreteType != DeviceConcreteType.Sensor_Pir) + else { - //浼犳劅鍣ㄩ櫎浜哖ir閮芥病鏈夊畾浣嶅姛鑳� - canTest = false; + frame = new TopRightMenuControl(canTest == true ? 2 : 1, 1); } - var frame = new TopRightMenuControl(canTest == true ? 2 : 1, 1); string deviceMenu = string.Empty; if (canTest == true) @@ -1077,7 +1743,7 @@ frame.AddRowMenu(deviceMenu, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () => { //鍙戦�佸畾浣嶅姛鑳� - Common.LocalDevice.Current.SetFixedPositionCommand(listNewDevice[0]); + Common.LocalDevice.Current.SetFixedPositionCommand(listNewDevice[0], true); }); } @@ -1085,6 +1751,11 @@ deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete); frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () => { + //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�,姝ゅ姛鑳芥棤鏁� + if (Common.Config.Instance.Home.IsVirtually == true) + { + return; + } //纭鍒犻櫎璇ヨ澶囧強鍔熻兘锛� string msg = Language.StringByID(R.MyInternationalizationString.uDeleteDeviceMsg); this.ShowMassage(ShowMsgType.Confirm, msg, () => @@ -1093,6 +1764,23 @@ this.DoDeleteDevice(); }); }); + + //鍚屾 + deviceMenu = Language.StringByID(R.MyInternationalizationString.Synchronization); + if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(listNewDevice[0])) + { + frame.AddRowMenu(deviceMenu, "", "Item/SynchronizationSelected.png", () => + { + //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�,姝ゅ姛鑳芥棤鏁� + if (Common.Config.Instance.Home.IsVirtually == true) + { + return; + } + + //鍚屾鎸囧畾璁惧 + this.SynchronizationDevice(); + }); + } } @@ -1121,6 +1809,27 @@ }); }); } + + /// <summary> + /// 鍚屾鎸囧畾璁惧 + /// </summary> + private void SynchronizationDevice() + { + HdlThreadLogic.Current.RunThread(async () => + { + //鎵撳紑杩涘害鏉� + this.ShowProgressBar(); + + //鍚屾璁惧 + bool result = await Common.LocalDevice.Current.SynchronizationDevice(listNewDevice); + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(); + if (result == false) + { + return; + } + }); + } #endregion #region 鈻� 鍏抽棴鐣岄潰___________________________ @@ -1131,8 +1840,13 @@ public override void CloseFormBefore() { HdlGatewayReceiveLogic.Current.RemoveEvent("HandPullControl"); - //绉婚櫎鑾峰彇璁惧纭欢淇℃伅鐨勭洃鍚嚎绋� - HdlDeviceHardInfoLogic.Current.RemoveDeviceHardInfoThread(listNewDevice[0]); + HdlGatewayReceiveLogic.Current.RemoveEvent("SetDeviceVersionInfo"); + + //璁惧鏂板叆缃� + if (UserCenterResourse.DicActionForm.ContainsKey("AddDeviceTypeListForm") == true) + { + this.LoadFormMethodByName("DeviceListMainForm", "RefreshDeviceRow", new object[] { listNewDevice[0].DeviceAddr }); + } base.CloseFormBefore(); } @@ -1146,21 +1860,13 @@ /// </summary> private void RefreshHardFirmwareInfo() { - if (listNewDevice[0].DriveCode > 0) + if (listNewDevice[0].DriveCode > 0 || Common.Config.Instance.Home.IsShowTemplate == true) { //铏氭嫙璁惧娌℃湁杩欑鎿嶄綔 return; } //閲嶆柊鑾峰彇纭欢淇℃伅 - HdlDeviceHardInfoLogic.Current.SetAllHardFirmwareInfoToDevice(listNewDevice[0], (device, reportData) => - { - for (int i = 1; i < listNewDevice.Count; i++) - { - //鍏ㄩ儴鍥炶矾鐨勪俊鎭兘鏄竴鑷寸殑 - HdlDeviceHardInfoLogic.Current.SetHardFirmwareInfo(device.DeviceStatusReport, listNewDevice[i]); - listNewDevice[i].ReSave(); - } - }); + HdlDeviceHardInfoLogic.Current.SetAllHardFirmwareInfoToDevice(listNewDevice[0]); } #endregion @@ -1191,30 +1897,67 @@ { return; } - //鑾峰彇涓�.... - this.btnAirConditionerVersion.TextID = R.MyInternationalizationString.uGetting; + //濡傛灉鏄櫄鎷熶綇瀹呮垨鑰呭睍绀烘ā鏉跨殑璇� + if (Config.Instance.Home.IsShowTemplate == true || Config.Instance.Home.IsVirtually == true) + { + return; + } + + bool notVersion = true; + if (this.listNewDevice[0] is AC) + { + notVersion = ((AC)this.listNewDevice[0]).AcModelVersion == string.Empty; + } + if (notVersion == true) + { + //鑾峰彇涓� + btnAirConditionerVersion.Text = Language.StringByID(R.MyInternationalizationString.uGetting); + } HdlThreadLogic.Current.RunThread(async () => { //璇诲彇绌鸿皟妯″潡鐗堟湰 var result = await HdlDeviceAirConditionerLogic.Current.ReadACFirewareVersionAsync(listNewDevice[0]); if (result == null || result.readACFirewareVersionResponData == null || result.readACFirewareVersionResponData.Status != 0) { - HdlThreadLogic.Current.RunMain(() => + if (notVersion == true) { //鑾峰彇澶辫触 - btnAirConditionerVersion.TextID = R.MyInternationalizationString.uGettingFail; - }); + HdlThreadLogic.Current.RunMain(() => + { + btnAirConditionerVersion.Text = Language.StringByID(R.MyInternationalizationString.uGettingFail); + }); + } + return; } - else + HdlThreadLogic.Current.RunMain(() => { - HdlThreadLogic.Current.RunMain(() => + string strVersion = result.readACFirewareVersionResponData.FirewareVersion.Replace("-", string.Empty); + if (this.listNewDevice[0] is AC) { - btnAirConditionerVersion.Text = result.readACFirewareVersionResponData.FirewareVersion.Replace("-", string.Empty); - }); - } + ((AC)this.listNewDevice[0]).AcModelVersion = strVersion; + this.listNewDevice[0].ReSave(); + } + btnAirConditionerVersion.Text = strVersion; + }); }); } + /// <summary> + /// 妫�娴嬭兘鍚︽樉绀哄姛鑳借缃殑鑿滃崟 + /// </summary> + /// <returns></returns> + private bool CheckCanShowFunctionSettionRow() + { + //鏂规偊鏂伴闈㈡澘娌℃湁鍔熻兘璁剧疆 + if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir + || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FourButtonScene + || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_TwoButtonCurtain) + { + return false; + } + return true; + } + #endregion } } -- Gitblit v1.8.0