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/DeviceFunctionSettionForm.cs | 358 +++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 319 insertions(+), 39 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs index b5ade0c..891aeeb 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs @@ -27,7 +27,7 @@ /// <summary> /// 璁惧澶囨敞鐨勬帶浠� /// </summary> - private FrameCaptionInputControl btnDeviceName = null; + private FrameCaptionInputControl frameDeviceName = null; /// <summary> /// 璁惧鐨勬煇涓�鍥炶矾 /// </summary> @@ -88,7 +88,24 @@ { this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1028); } - else + else if (this.deviceObj.Type == DeviceType.Airer) + { + //鏅捐。鏋惰澶囧彧瀛樺彇鍥炶矾1锛屽鏋滄槸鏅捐。鏋讹紝榛樿绔偣閮芥槸1锛� + this.deviceObj.DeviceEpoint = 1; + this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1342); + } + else if (this.deviceObj.Type == DeviceType.TemperatureSensor) + { + //绌烘皵璐ㄩ噺浼犳劅鍣� + //鑾峰彇璁惧绫诲瀷 + var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { this.deviceObj }); + //绌烘皵璐ㄩ噺浼犳劅鍣� + if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.AirQualitySensor) + { + this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1368); + } + } + if (this.listview == null) { this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1128); } @@ -100,10 +117,10 @@ var btnFinish = new BottomClickButton(); btnFinish.TextID = R.MyInternationalizationString.uSave; bodyFrameLayout.AddChidren(btnFinish); - btnFinish.ButtonClickEvent += async (sender, e) => + btnFinish.ButtonClickEvent += (sender, e) => { //璁板綍璧峰綋鍓嶆鍦ㄦ搷浣滅殑鍥炶矾鍚嶅瓧 - dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = btnDeviceName.Text.Trim(); + dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = frameDeviceName.Text.Trim(); foreach (var epoint in dicDeviceSaveName.Keys) { var device = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, epoint); @@ -117,16 +134,32 @@ if (oldName != newName) { //璁惧鍚嶇О淇敼 - var result = await Common.LocalDevice.Current.ReName(device, newName); + var result = Common.LocalDevice.Current.ReName(device, newName); if (result == false) { return; } } } + + //濡傛灉鏄櫨琛f灦銆屾椂闂村厛涓嶅鐞嗐�� + //if (deviceObj.Type == DeviceType.Airer) + //{ + // var airer = deviceObj as Airer; + // SetAirerFunTimeDevice(airer); + //} + //else + //{ //鍏抽棴鑷韩 this.CloseForm(); + //} + }; + //濡傛灉褰撳墠鏄睍绀烘ā鏉�,鍒欎笉鑳界紪杈� + if (Common.Config.Instance.Home.IsShowTemplate == true) + { + btnFinish.CanClick = false; + } } /// <summary> @@ -139,36 +172,42 @@ //鍥炶矾澶囨敞 string caption = Language.StringByID(R.MyInternationalizationString.uDeviceEpointNote); string nameValue = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice); + if (dicDeviceSaveName.ContainsKey(nowSelectDevice.DeviceEpoint) == true) { nameValue = dicDeviceSaveName[nowSelectDevice.DeviceEpoint]; } - this.btnDeviceName = new FrameCaptionInputControl(caption, nameValue, listview.rowSpace / 2); - listview.AddChidren(btnDeviceName); - btnDeviceName.InitControl(); - btnDeviceName.AddBottomLine(); - btnDeviceName.txtInput.FinishInputEvent += async () => + this.frameDeviceName = new FrameCaptionInputControl(caption, nameValue, listview.rowSpace / 2); + this.frameDeviceName.txtInput.MaxByte = 48;//闄愬埗鍙兘杈撳叆48涓瓧鑺� + listview.AddChidren(frameDeviceName); + frameDeviceName.InitControl(); + frameDeviceName.AddBottomLine(); + //濡傛灉褰撳墠鏄睍绀烘ā鏉�,鍒欓渶瑕佸鐞� + if (Common.Config.Instance.Home.IsShowTemplate == false) { - string oldName = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice); - if (btnDeviceName.Text.Trim() == string.Empty) + frameDeviceName.txtInput.FinishInputEvent += () => { - //灏嗗悕瀛楄繕鍘� - btnDeviceName.Text = oldName; - } - if (oldName != btnDeviceName.Text.Trim()) - { - //璁惧鍚嶇О淇敼 - var result = await Common.LocalDevice.Current.ReName(nowSelectDevice, btnDeviceName.Text.Trim()); - if (result == false) + string oldName = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice); + if (frameDeviceName.Text.Trim() == string.Empty) { - return; + //灏嗗悕瀛楄繕鍘� + frameDeviceName.Text = oldName; } - //鍥炶矾澶囨敞淇敼鎴愬姛! - string msg = Language.StringByID(R.MyInternationalizationString.uDeviceEpointReNoteSuccess); - this.ShowMassage(ShowMsgType.Tip, msg); - } - }; + if (oldName != frameDeviceName.Text.Trim()) + { + //璁惧鍚嶇О淇敼 + var result = Common.LocalDevice.Current.ReName(nowSelectDevice, frameDeviceName.Text.Trim()); + if (result == false) + { + return; + } + //鍥炶矾澶囨敞淇敼鎴愬姛! + string msg = Language.StringByID(R.MyInternationalizationString.uDeviceEpointReNoteSuccess); + this.ShowMassage(ShowMsgType.Tip, msg); + } + }; + } //鎵�灞炲尯鍩� var rowBeloneArea = new BelongAreaControl(listview.rowSpace / 2); @@ -182,8 +221,32 @@ HdlRoomLogic.Current.ChangedRoom(nowSelectDevice, roomKeys); }; + if (this.deviceObj.Type == DeviceType.TemperatureSensor) + { + //鑾峰彇璁惧绫诲瀷 + var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { this.deviceObj }); + //绌烘皵璐ㄩ噺浼犳劅鍣� + if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.AirQualitySensor) + { + //璁惧绫诲瀷 + this.AddDeviceTypeRow(); + } + } + //娣诲姞鍔熻兘绫诲瀷琛� this.AddFunctionTypeRow(); + + if (this.deviceObj.Type == DeviceType.Airer) + { + var airer = this.deviceObj as Airer; + //娣诲姞鐑樺共鏃堕棿琛� + this.AddAirerDryTimeRow(airer); + //娣诲姞椋庡共鏃堕棿琛� + this.AddAirerWindTimeRow(airer); + //娣诲姞娑堟瘨鏃堕棿琛� + this.AddAirerDisinfectTimeRow(airer); + } + //鍒濆鍖栨甯冨畬鎴� tableContr.FinishInitControl(); } @@ -198,7 +261,8 @@ private void InitTopRightMenu() { //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘 - if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice) == false) + if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice) == false + || Common.Config.Instance.Home.IsShowTemplate == true) { return; } @@ -265,7 +329,171 @@ //搴曠嚎 rowFunction.AddBottomLine(); } + #endregion + #region 鈻� 璁惧绫诲瀷___________________________ + + /// <summary> + /// 娣诲姞鍔熻兘绫诲瀷琛� + /// </summary> + private void AddDeviceTypeRow() + { + var caption = Language.StringByID(R.MyInternationalizationString.uDeviceType); + var listNewDevice = new List<CommonDevice>(); + listNewDevice.Add(deviceObj); + var deviceName = Common.LocalDevice.Current.GetDeviceObjectText(listNewDevice); + var btnType = new FrameCaptionViewControl(caption, deviceName, listview.rowSpace / 2); + btnType.UseClickStatu = false; + listview.AddChidren(btnType); + btnType.InitControl(); + //鍒掔嚎 + btnType.AddBottomLine(); + } + #endregion + + #region 鈻� 鏅捐。鏋朵笓鐢╛________________________ + #region 鈻� 鐑樺共鏃堕棿_________________________ + /// <summary> + /// 鐑樺共鏃堕棿琛� + /// </summary> + private void AddAirerDryTimeRow(Airer airer) + { + var rowAirer = new AiererTimeControl(listview.rowSpace / 2); + listview.AddChidren(rowAirer); + var text = Language.StringByID(R.MyInternationalizationString.AirerDefault) + 3 + Language.StringByID(R.MyInternationalizationString.AirerHour); + if (airer.DryTime != 0) + { + double result = airer.DryTime / 60.0; + var hour = Math.Round(result, 2); + text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour); + } + rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDryTime), text, 1); + //搴曠嚎 + rowAirer.AddBottomLine(); + rowAirer.SelectTimeEvent += (v1, v2) => + { + //double result = second / 3600.0; + //var hour = Math.Round(result, 1); + //text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour); + //rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDryTime), text, 1); + }; + + } + #endregion + + #region 鈻� 椋庡共鏃堕棿_________________________ + /// <summary> + /// 椋庡共鏃堕棿琛� + /// </summary> + private void AddAirerWindTimeRow(Airer airer) + { + var rowAirer = new AiererTimeControl(listview.rowSpace / 2); + listview.AddChidren(rowAirer); + var text = Language.StringByID(R.MyInternationalizationString.AirerDefault) + 3 + Language.StringByID(R.MyInternationalizationString.AirerHour); + if (airer.WindTime != 0) + { + double result = airer.WindTime / 60.0; + var hour = Math.Round(result, 1); + text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour); + } + rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerWindTime), text, 2); + //搴曠嚎 + rowAirer.AddBottomLine(); + rowAirer.SelectTimeEvent += (v1, v2) => + { + //double result = second / 3600.0; + //var hour = Math.Round(result, 1); + //text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour); + //rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDryTime), text, 1); + }; + } + #endregion + + #region 鈻� 娑堟瘨鏃堕棿_________________________ + /// <summary> + /// 娑堟瘨鏃堕棿琛� + /// </summary> + private void AddAirerDisinfectTimeRow(Airer airer) + { + var rowAirer = new AiererTimeControl(listview.rowSpace / 2); + listview.AddChidren(rowAirer); + var text = Language.StringByID(R.MyInternationalizationString.AirerDefault) + 30 + Language.StringByID(R.MyInternationalizationString.AirerMin); + if (airer.DisinfectTime != 0) + { + text = airer.DisinfectTime + Language.StringByID(R.MyInternationalizationString.AirerMin); + } + rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDisinfectTime), text, 3); + //搴曠嚎 + rowAirer.AddBottomLine(); + rowAirer.SelectTimeEvent += (v1, v2) => + { + + }; + } + #endregion + + #region 鈻� 璇诲彇鏃堕棿鍛戒护___________________ + + /// <summary> + /// 璇诲彇鏃堕棿鍛戒护 + /// </summary> + public void ReadAirerFunTimeDevice() + { + + } + + #endregion + + /// <summary> + /// 璁惧鏃堕棿璁剧疆 + /// </summary> + private void SetAirerFunTimeDevice(Airer airer) + { + HdlThreadLogic.Current.RunThread(async () => + { + //鎵撳紑杩涘害鏉� + this.ShowProgressBar(); + + //鍒欒璁剧疆瀵瑰簲鐨勫姛鑳芥椂闂� + List<CommonDevice> listdevice = new List<CommonDevice>(); + + for (int i = 3; i < 6; i++) + { + int time = 0; + listdevice.Add(deviceObj); + switch (i) + { + case 3: + time = airer.WindTime; + break; + case 4: + time = airer.DryTime; + break; + case 5: + time = airer.DisinfectTime; + break; + } + bool result = await Common.LocalDevice.Current.SetAirerTimeDevice(listdevice, airer, time, i); + if (result == false) + { + airer.WindTime = airer.WindRemainTime = 0; + airer.DryTime = airer.DryRemainTime = 0; + airer.DisinfectTime = airer.DisinfectTime = 0; + HdlThreadLogic.Current.RunMainInThread(() => + { + this.InitMiddleFrame(); + }); + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(); + return; + } + } + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(); + //鍏抽棴鑷韩 + this.CloseForm(); + }); + } #endregion #region 鈻� 鍒濆鍖栬澶囧洖璺浘鏍嘷________________ @@ -343,6 +571,39 @@ frameBack.Y = Application.GetRealHeight(153); frameBack.Gravity = Gravity.Center; } + + //濡傛灉鏄櫨琛f灦 + if (deviceObj.Type == DeviceType.Airer) + { + frame.RemoveFromParent(); + frameBorder.Y = Application.GetRealHeight(0); + frameBorder.Height = Application.GetRealHeight(299); + frameBack.BackgroundImagePath = "Airer/Airer216.png"; + frameBack.Width = this.GetPictrueRealSize(207); + frameBack.Height = this.GetPictrueRealSize(207); + frameBack.Y = Application.GetRealHeight(92); + frameBack.Gravity = Gravity.CenterHorizontal; + } + + //濡傛灉鏄┖姘旇川閲忎紶鎰熷櫒 + if (this.deviceObj.Type == DeviceType.TemperatureSensor) + {//绌烘皵璐ㄩ噺浼犳劅鍣� + //鑾峰彇璁惧绫诲瀷 + var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { this.deviceObj }); + //绌烘皵璐ㄩ噺浼犳劅鍣� + if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.AirQualitySensor) + { + frame.RemoveFromParent(); + frameBorder.Y = Application.GetRealHeight(0); + frameBorder.Height = Application.GetRealHeight(299); + //鍔犺浇鍥炬爣鎺т欢 + var btnPic = new DeviceInfoIconControl(); + btnPic.Y = Application.GetRealHeight(104); + btnPic.Gravity = Gravity.CenterHorizontal; + listBackControl.frameTable.AddChidren(btnPic); + btnPic.InitControl(deviceObj); + } + } } else { @@ -350,16 +611,20 @@ } } - if (listIcon.Count > 2) + //濡傛灉鏄櫨琛f灦,鏈�5涓洖璺紝浣嗘槸5涓洖璺彧鏄唬琛ㄤ笉鍚屽姛鑳戒娇鐢紝涓嶆槸鐪熷疄鐨勫搴旇澶囷紝鎵�浠ラ粯璁ゅ彧鏄剧ず绗竴鍥炶矾 + if (deviceObj.Type != DeviceType.Airer) { - //璁$畻鐪熷疄楂樺害 - int realHeight = this.GetPictrueRealSize(58 + 58);//涓婁笅闂磋窛 - realHeight += frameBack.ChildrenCount * this.GetPictrueRealSize(124);//鍦嗗湀楂樺害 - realHeight += (frameBack.ChildrenCount-1) * this.GetPictrueRealSize(60);//鍦嗗湀闂磋窛 - if (realHeight > frameBack.Height) + if (listIcon.Count > 2) { - //鍙樻洿楂樺害 - frameBack.Height = realHeight; + //璁$畻鐪熷疄楂樺害 + int realHeight = this.GetPictrueRealSize(58 + 58);//涓婁笅闂磋窛 + realHeight += frameBack.ChildrenCount * this.GetPictrueRealSize(124);//鍦嗗湀楂樺害 + realHeight += (frameBack.ChildrenCount - 1) * this.GetPictrueRealSize(60);//鍦嗗湀闂磋窛 + if (realHeight > frameBack.Height) + { + //鍙樻洿楂樺害 + frameBack.Height = realHeight; + } } } } @@ -427,6 +692,18 @@ //鍙鍚屼竴绉嶇被鍨嬬殑 continue; } + + //鑾峰彇璁惧灞炰簬銆愮畝绾﹀鍔熻兘闈㈡澘銆� + var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice); + if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_SimpleMultifunction) + { + if (device.Type == DeviceType.TemperatureSensor && device.DeviceEpoint == 1) + { + //绠�绾﹀鍔熻兘闈㈡澘绗�1鍥炶矾鏄竴涓粦瀹氭俯婀垮害浼犳劅鍣ㄧ绫诲瀷锛屼笉鏄湡鐨勬俯婀垮害鐨勪紶鎰熷櫒锛岄渶瑕佸睆钄芥帀 + continue; + } + } + listRelay.Add(device); if (device.DeviceEpoint == deviceObj.DeviceEpoint) { @@ -467,7 +744,6 @@ } return listIcon; } - #endregion #region 鈻� 鍥炶矾閫夋嫨___________________________ @@ -483,16 +759,20 @@ if (nowSelectControl != null) { //鍚屼竴涓笢瑗�,涓嶉笩浠� - if (nowSelectControl.Name == nowContr.Name) + if (this.deviceObj.Type != DeviceType.Airer) { - return; + if (nowSelectControl.Name == nowContr.Name) + { + return; + } } + //涓嶉�夋嫨鐘舵�� nowSelectControl.BorderColor = 0xff979797; nowSelectControl.TextSize = 13; nowSelectControl.TextColor = UserCenterColor.Current.TextGrayColor3; //璁板綍瀹冪殑鍚嶅瓧 - dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = btnDeviceName.Text.Trim(); + dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = frameDeviceName.Text.Trim(); } //閫夋嫨鐘舵�� nowContr.BorderColor = 0xfffb744a; -- Gitblit v1.8.0