From 31497bb69602433d94c8a28ea01c3ee3c7cc8576 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 24 十月 2019 14:32:30 +0800 Subject: [PATCH] 完全合并了Wjc,Xm 的 代码 --- ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayInfoEditorForm.cs | 442 +++++++++++++++++++++++++++++++++++------------------- 1 files changed, 283 insertions(+), 159 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayInfoEditorForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayInfoEditorForm.cs index 0a5103d..6b3fb19 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayInfoEditorForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayInfoEditorForm.cs @@ -1,6 +1,7 @@ 锘縰sing System; using ZigBee.Device; using System.Collections.Generic; +using System.Threading.Tasks; namespace Shared.Phone.UserCenter.GatewayManage { @@ -12,13 +13,9 @@ #region 鈻� 鍙橀噺澹版槑___________________________ /// <summary> - /// 缃戝叧鍚嶇О鎺т欢 + /// 鍒楄〃鎺т欢 /// </summary> - private FrameCaptionInputControl rowGateway = null; - /// <summary> - /// 璁惧鏄庣粏鍒楄〃鎺т欢鐨勬甯� - /// </summary> - private DeviceInformationListControl listDeviceControl = null; + private VerticalListControl listview = null; /// <summary> /// 褰撳墠閫夋嫨鐨勭綉鍏� /// </summary> @@ -37,19 +34,10 @@ this.zbGateway = i_zbGateway; //璁剧疆鏍囬淇℃伅 - base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uEditorGatewayInformation)); + base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDeviceSettion)); - //缃戝叧瀹氫綅 - var btnIcon = new MostRightIconControl(69, 69); - btnIcon.UnSelectedImagePath = "Item/Test.png"; - topFrameLayout.AddChidren(btnIcon); - btnIcon.InitControl(); - - btnIcon.ButtonClickEvent += (sender, e) => - { - //娴嬭瘯 - HdlGatewayLogic.Current.SetFixedPositionCommand(i_zbGateway); - }; + //鍒濆鍖栧彸涓婅鑿滃崟 + this.InitTopRightMenu(); //鍒濆鍖栦腑閮ㄦ帶浠� this.InitMiddleFrame(); @@ -63,162 +51,233 @@ //娓呯┖bodyFrame this.ClearBodyFrame(); - //鍥剧墖涓婁笅鐨勯棿璺�(涓婁笅闂磋窛涓�鑷�) - int picSpcae = Application.GetRealHeight(100); - //鍥剧墖 - var btnImage = new PicViewControl(838, 530, true); - btnImage.Y = picSpcae; - btnImage.Gravity = Gravity.CenterHorizontal; - HdlGatewayLogic.Current.SetRealGatewayPictrue(btnImage, zbGateway); - bodyFrameLayout.AddChidren(btnImage); + //鍒濆鍖栨甯� + var tableContr = new InformationEditorControl(); + this.listview = tableContr.InitControl(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 369, 1368); - //瀹屾垚鎸夐挳 - var btnFinish = new BottomClickButton(); - btnFinish.TextID = R.MyInternationalizationString.uFinish; - bodyFrameLayout.AddChidren(btnFinish); - btnFinish.MouseUpEventHandler += (sender, e) => + //鍥剧墖 + var btnPic = new DeviceInfoIconControl(); + btnPic.Y = Application.GetRealHeight(92); + btnPic.Gravity = Gravity.CenterHorizontal; + bodyFrameLayout.AddChidren(btnPic); + btnPic.InitControl(this.zbGateway); + + //璁惧澶囨敞 + string caption = Language.StringByID(R.MyInternationalizationString.uDeviceNote); + string nameValue = HdlGatewayLogic.Current.GetGatewayName(zbGateway); + var btnNote = new FrameCaptionInputControl(caption, nameValue, listview.rowSpace / 2); + listview.AddChidren(btnNote); + btnNote.InitControl(); + //鍒掔嚎 + btnNote.AddBottomLine(); + btnNote.txtInput.FinishInputEvent += () => { - //瀹屾垚鎸夐挳鎸変笅 - this.FinishButtonClick(); + string oldName = HdlGatewayLogic.Current.GetGatewayName(zbGateway); + if (btnNote.Text == string.Empty) + { + btnNote.Text = oldName; + } + if (oldName != btnNote.Text) + { + //淇敼鍚嶅瓧 + this.SetGatewayName(btnNote.Text, false); + } }; - //鐧借壊搴曢儴鑳屾櫙 - var frameBottomWhite = new FrameLayout(); - frameBottomWhite.Y = btnFinish.Y - ControlCommonResourse.BottomButtonAndListViewSpace; - frameBottomWhite.Height = bodyFrameLayout.Height - btnFinish.Y + ControlCommonResourse.BottomButtonAndListViewSpace; - frameBottomWhite.BackgroundColor = UserCenterColor.Current.White; - bodyFrameLayout.AddChidren(frameBottomWhite); - //灏嗗畬鎴愭寜閽疆椤� - btnFinish.BringToFront(); + //璁惧绫诲瀷 + caption = Language.StringByID(R.MyInternationalizationString.uDeviceType); + var btnType = new FrameCaptionViewControl(caption, nameValue, listview.rowSpace / 2); + btnType.UseClickStatu = false; + listview.AddChidren(btnType); + btnType.InitControl(); + HdlGatewayLogic.Current.SetGatewayImageText(btnType.txtView, this.zbGateway); + //鍒掔嚎 + btnType.AddBottomLine(); - //鑷畾涔夌殑璁惧鍒楄〃瀹瑰櫒 - this.listDeviceControl = new DeviceInformationListControl(); - //鍒楄〃鎺т欢鏈�澶х殑楂樺害(瀹屾垚鎸夐挳鐨刌杞� - 璁剧疆鐨勯棿闅� - 鍥剧墖Y杞� - 鍥剧墖鐨勪笁鍒嗕箣涓�) - int listViewMaxHeight = btnFinish.Y - ControlCommonResourse.BottomButtonAndListViewSpace - btnImage.Y - btnImage.Height / 3; - //鏄庣粏Frame鐨勬渶灏忛珮搴�(搴曢儴frame鐨刌杞� - 鍥剧墖搴曢儴 - 鍥剧墖涓庡姬搴﹀渾鐨勯棿璺� - 寮у害鍦嗛珮搴�) - int minDetailHeight = frameBottomWhite.Y - btnImage.Bottom - picSpcae - listDeviceControl.halfRoundHeigth; - //鍒濆鍖栨帶浠� - listDeviceControl.InitControl(bodyFrameLayout, frameBottomWhite.Height, listViewMaxHeight, minDetailHeight, 4); + //鏁版嵁涓婁紶涓庝笅杞� + var rowData = new RowLayoutControl(listview.rowSpace / 2); + listview.AddChidren(rowData); + rowData.frameTable.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uDataUploadAndDownLoad), 700); + //鍙冲浘鏍� + rowData.frameTable.AddRightArrow(); + //搴曠嚎 + rowData.frameTable.AddBottomLine(); + rowData.frameTable.ButtonClickEvent += (sender, e) => + { + }; - //璁惧缂栬緫 - var btnTitle = new DetailTitleControl(Application.GetRealWidth(800), listDeviceControl.titleHeight, false); - btnTitle.TextID = R.MyInternationalizationString.uDeviceEditor; - listDeviceControl.AddChidren(btnTitle); - - //娣诲姞鍏ㄩ儴鑿滃崟琛� - this.AddAllMenuRow(); - } - - #endregion - - #region 鈻� 娣诲姞鍏ㄩ儴鑿滃崟琛宊____________________ - - /// <summary> - /// 娣诲姞鍏ㄩ儴鑿滃崟琛� - /// </summary> - private void AddAllMenuRow() - { - //缃戝叧鍚嶇О - string caption = Language.StringByID(R.MyInternationalizationString.uGatewayName); - string nameValue = HdlGatewayLogic.Current.GetGatewayName(zbGateway); - this.rowGateway = new FrameCaptionInputControl(caption, nameValue); - listDeviceControl.AddChidren(rowGateway); - rowGateway.InitControl(); - rowGateway.AddBottomLine(); - - //缃戝叧IP - caption = Language.StringByID(R.MyInternationalizationString.uGatewayIP); - nameValue = HdlGatewayLogic.Current.GetGatewayBaseInfoAttribute(zbGateway, "IpAddress").ToString(); - var btnIp = new FrameCaptionViewControl(caption, nameValue); - listDeviceControl.AddChidren(btnIp); - btnIp.InitControl(); - btnIp.txtView.TextColor = UserCenterColor.Current.TextGrayColor; - btnIp.AddBottomLine(); - //涓荤綉鍏虫垨鑰呭瓙缃戝叧鏍囪瘑 - var btnFlage = new RowMostRightTextView(); - btnFlage.TextColor = UserCenterColor.Current.TextGrayColor; - btnIp.AddChidren(btnFlage, ChidrenBindMode.NotBind); - int result = HdlGatewayLogic.Current.IsMainGateway(this.zbGateway); - //涓荤綉鍏� - if (result == 1) { btnFlage.TextID = R.MyInternationalizationString.uMainGateway; } - //瀛愮綉鍏� - else if (result == 0) { btnFlage.TextID = R.MyInternationalizationString.uChidrenGateway; } - - //缃戝叧绫诲瀷 - caption = Language.StringByID(R.MyInternationalizationString.uGatewayType); - //nameValue = HdlGatewayLogic.Current.GetGatewayImageText(this.zbGateway); - var btnObject = new FrameCaptionViewControl(caption, nameValue); - listDeviceControl.AddChidren(btnObject); - btnObject.InitControl(); - btnObject.txtView.TextColor = UserCenterColor.Current.TextGrayColor; - btnObject.AddBottomLine(); - - //鍥轰欢淇℃伅 - this.AddHardWareInfoRow(); - } - - #endregion - - #region 鈻� 娣诲姞鍥轰欢淇℃伅琛宊____________________ - - /// <summary> - /// 娣诲姞鍥轰欢淇℃伅琛� - /// </summary> - private void AddHardWareInfoRow() - { - var rowInfo = new RowLayoutControl(); - listDeviceControl.AddChidren(rowInfo); - - //鍥轰欢淇℃伅 - //var btnInfo = new RowCenterViewControl(false, 14); - //btnInfo.TextID = R.MyInternationalizationString.uFirmwareInformation; - //rowInfo.AddChidren(btnInfo); - + //閫氱敤淇℃伅 + var btnGeneral = new FrameRowControl(listview.rowSpace / 2); + listview.AddChidren(btnGeneral); + btnGeneral.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uGeneralInformation), 600); //鍚戝彸鍥炬爣 - //rowInfo.AddRightArrow(); + btnGeneral.AddRightArrow(); + //搴曠嚎 + btnGeneral.AddBottomLine(); + btnGeneral.ButtonClickEvent += (sender, e) => + { + var form = new GatewayGeneralInformationForm(); + form.AddForm(zbGateway); + }; - //鏂扮増鏈彁绀烘帶浠� - var btnNewVersion = new RowNewVersionTipView(); + //鍥轰欢鍗囩骇 + var rowUpDate = new FrameRowControl(listview.rowSpace / 2); + listview.AddChidren(rowUpDate); + rowUpDate.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uFirmwareUpdate), 600); + //鍚戝彸鍥炬爣 + rowUpDate.AddRightArrow(); + //搴曠嚎 + rowUpDate.AddBottomLine(); + //鎻愮ず鏈夋柊鐗堟湰 + var btnNewVersion = new PicViewControl(78, 55); + btnNewVersion.UnSelectedImagePath = "Item/NewVersion.png"; btnNewVersion.Visible = false; - rowInfo.AddChidren(btnNewVersion); + btnNewVersion.X = Application.GetRealWidth(242); + btnNewVersion.Y = Application.GetRealHeight(23); + rowUpDate.AddChidren(btnNewVersion, ChidrenBindMode.BindEventOnly); + rowUpDate.ButtonClickEvent += (sender, e) => + { + btnNewVersion.Visible = false; + }; - //rowInfo.MouseUpEvent += (sender, e) => - //{ - // btnNewVersion.Visible = false; - // var form = new GatewayFirmwareInfoForm(); - // form.AddForm(zbGateway); - //}; + //鍒濆鍖栨甯冨畬鎴� + tableContr.FinishInitControl(bodyFrameLayout, this.listview); + tableContr = null; - //妫�娴嬫柊鐗堟湰 - this.CheckNewVersion(btnNewVersion); + //淇濆瓨 + var btnFinish = new BottomClickButton(); + btnFinish.TextID = R.MyInternationalizationString.uSave; + bodyFrameLayout.AddChidren(btnFinish); + btnFinish.ButtonClickEvent += (sender, e) => + { + string oldName = HdlGatewayLogic.Current.GetGatewayName(zbGateway); + if (btnNote.Text == string.Empty) + { + btnNote.Text = oldName; + } + if (oldName != btnNote.Text) + { + //淇敼鍚嶅瓧 + this.SetGatewayName(btnNote.Text, false); + } + else + { + //鍏抽棴鑷韩 + this.CloseForm(); + } + }; + + HdlThreadLogic.Current.RunThread(() => + { + //妫�娴嬫柊鐗堟湰 + this.CheckNewVersion(btnNewVersion, btnType); + }); } + + #endregion + + #region 鈻� 鍙充笂瑙掕彍鍗昣________________________ + + /// <summary> + /// 鍒濆鍖栧彸涓婅鑿滃崟 + /// </summary> + private void InitTopRightMenu() + { + var btnIcon = new MostRightIconControl(69, 69); + btnIcon.UnSelectedImagePath = "Item/More.png"; + topFrameLayout.AddChidren(btnIcon); + btnIcon.InitControl(); + btnIcon.ButtonClickEvent += ((sender, e) => + { + //鏄剧ず鍙充笂瑙掕彍鍗曠晫闈� + this.ShowTopRightMenu(); + }); + } + + /// <summary> + /// 鏄剧ず鍙充笂瑙掕彍鍗曠晫闈� + /// </summary> + private void ShowTopRightMenu() + { + bool flage = UserCenterResourse.DicActionForm.ContainsKey("NewGateWayMenuSelectForm"); + var frame = new TopRightMenuControl(flage == true ? 1 : 3); + //瀹氫綅 + string MenuName = Language.StringByID(R.MyInternationalizationString.uFixedPosition); + frame.AddRowMenu(MenuName, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () => + { + //鍙戦�佸畾浣嶅姛鑳� + HdlGatewayLogic.Current.SetFixedPositionCommand(zbGateway); + }); + if (flage == true) + { + //鎼滅储缃戝叧鐨勬椂鍊�,涓嶈兘鍒犻櫎,涓嶇粰浠栧垏鎹� + return; + } + + //鍒囨崲 + MenuName = Language.StringByID(R.MyInternationalizationString.uSwitch1); + string strWayId = HdlGatewayLogic.Current.GetGatewayId(zbGateway); + if (strWayId == GatewayResourse.AppOldSelectGatewayId) + { + MenuName = Language.StringByID(R.MyInternationalizationString.uRefresh); + } + frame.AddRowMenu(MenuName, "Item/GwSwitchIcon.png", "Item/GwSwitchIconSelected.png", () => + { + string nameValue = HdlGatewayLogic.Current.GetGatewayName(zbGateway); + //鏄惁鍒囨崲鍒皗0}缃戝叧? + string msg = string.Format(Language.StringByID(R.MyInternationalizationString.uConfirmWantToSwitchTheGateway), "[" + nameValue + "]"); + if (strWayId == GatewayResourse.AppOldSelectGatewayId) + { + //鏄惁閲嶆柊鍒锋柊{0}缃戝叧? + msg = string.Format(Language.StringByID(R.MyInternationalizationString.uConfirmWantToRefreshTheGateway), "[" + nameValue + "]"); + } + this.ShowMassage(ShowMsgType.Confirm, msg, () => + { + HdlThreadLogic.Current.RunThread(() => + { + //鎵ц鍒囨崲缃戝叧鎿嶄綔 + this.DoSwitchGateway(); + }); + }); + }); + //鍒犻櫎 + MenuName = Language.StringByID(R.MyInternationalizationString.uDelete); + frame.AddRowMenu(MenuName, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () => + { + //濡傜Щ闄ょ綉鍏筹紝璇ョ綉鍏崇粦瀹氱殑璁惧鍒楄〃{0}灏嗘竻绌猴紝纭缁х画鎵ц璇ユ搷浣滐紵 + string msg = Language.StringByID(R.MyInternationalizationString.uUnBindedMsg); + if (msg.Contains("{0}") == true) + { + msg = string.Format(msg, "\r\n"); + } + this.ShowMassage(ShowMsgType.Confirm, msg, () => + { + this.DeleteGateway(strWayId); + }); + }); + } + #endregion + + #region 鈻� 妫�娴嬫柊鐗堟湰_________________________ /// <summary> /// 妫�娴嬫柊鐗堟湰 /// </summary> /// <param name="btnNewVersion">鎻愮ず鏈夋柊鐗堟湰鐨勬帶浠�</param> - private async void CheckNewVersion(RowNewVersionTipView btnNewVersion) + /// <param name="btnType">缃戝叧绫诲瀷鎺т欢</param> + private async void CheckNewVersion(PicViewControl btnNewVersion, FrameCaptionViewControl btnType) { - //鎵撳紑杩涘害鏉� - this.ShowProgressBar(); - //鑾峰彇缃戝叧鐗堟湰淇℃伅 var result = await HdlGatewayLogic.Current.GetGatewayAllNewVersion(this.zbGateway); if (result == null) { - //鍏抽棴杩涘害鏉� - this.CloseProgressBar(ShowReLoadMode.YES); return; } - //鍏抽棴杩涘害鏉� - this.CloseProgressBar(); - Application.RunOnMainThread(() => { - if (this.rowGateway != null) + if (this.Parent != null) { - //璁剧疆缃戝叧鍚嶇О - this.rowGateway.Text = HdlGatewayLogic.Current.GetGatewayName(zbGateway); + HdlGatewayLogic.Current.SetGatewayImageText(btnType.txtView, this.zbGateway); if (result[0] != null || result[1] != null || result[2] != null) { //鎻愮ず鏈夋柊鐗堟湰 @@ -235,25 +294,25 @@ /// <summary> /// 瀹屾垚鎸夐挳鎸変笅 /// </summary> - private void FinishButtonClick() + /// <param name="gatewayName">缃戝叧鍚�</param> + private void FinishButtonClick(string gatewayName) { - if (string.IsNullOrEmpty(this.rowGateway.Text) == true) + if (string.IsNullOrEmpty(gatewayName) == true) { //璇疯緭鍏ョ綉鍏冲悕绉� - this.rowGateway.Text = string.Empty; string msg = Language.StringByID(R.MyInternationalizationString.uGatewayNameMastInput); this.ShowMassage(ShowMsgType.Error, msg); return; } string nameValue = HdlGatewayLogic.Current.GetGatewayName(zbGateway); - if (nameValue == this.rowGateway.Text) + if (nameValue == gatewayName) { //鍚屽悕涓嶉渶瑕佸鐞� this.CloseForm(); return; } //淇敼鍚嶅瓧 - this.SetGatewayName(this.rowGateway.Text); + this.SetGatewayName(gatewayName, true); } #endregion @@ -264,26 +323,91 @@ /// 璁剧疆缃戝叧鍚嶅瓧 /// </summary> /// <param name="gatewayName">缃戝叧鍚嶇О</param> - private async void SetGatewayName(string gatewayName) + private async void SetGatewayName(string gatewayName, bool closeForm) { - //鎵撳紑杩涘害鏉� - this.ShowProgressBar(); //淇敼缃戝叧鍚� var result = await HdlGatewayLogic.Current.ReName(zbGateway, gatewayName); - //鍏抽棴杩涘害鏉� - this.CloseProgressBar(); - //缃戝叧淇敼澶辫触 if (result == false) { return; } - Application.RunOnMainThread(() => + if (closeForm == true) { //鍏抽棴鐣岄潰 this.CloseForm(); + } + } + #endregion + + #region 鈻� 缃戝叧鍒囨崲___________________________ + + /// <summary> + /// 鎵ц鍒囨崲缃戝叧鎿嶄綔 + /// </summary> + /// <param name="gatewayId"></param> + /// <param name="online"></param> + private async void DoSwitchGateway() + { + string gatewayId = HdlGatewayLogic.Current.GetGatewayId(zbGateway); + var result = await HdlGatewayLogic.Current.DoSwitchGateway(gatewayId); + if (result == false) + { + return; + } + + HdlThreadLogic.Current.RunMain(() => + { + //鍏抽棴鑷韩 + this.CloseForm(); + + //鍏抽棴鎸囧畾鐣岄潰(缃戝叧鎼滅储) + this.CloseFormByFormName("WiredGatewayListForm"); + this.CloseFormByFormName("NewGateWayMenuSelectForm"); + + //鍏抽棴鎸囧畾鐣岄潰(缃戝叧缂栬緫) + this.CloseFormByFormName("GatewayListForm"); + + if (UserCenterResourse.DicActionForm.ContainsKey("DeviceListMainForm") == false) + { + //鍒锋柊涓荤敾闈� + var form = new Device.DeviceListMainForm(); + form.AddForm(); + } + else + { + //鍒锋柊涓荤敾闈�(涓嶉噸鏂拌幏鍙栬澶囩姸鎬�) + this.LoadFormMethodByName("DeviceListMainForm", "InitMiddleFrame", false); + } }); } + + #endregion + + #region 鈻� 瑙g粦缃戝叧___________________________ + + /// <summary> + /// 瑙g粦缃戝叧 + /// </summary> + /// <param name="strWayId"></param> + /// <param name="row"></param> + private async void DeleteGateway(string strWayId) + { + //鍒犻櫎浜戠缃戝叧 + bool result = await HdlGatewayLogic.Current.DeleteGateway(strWayId); + if (result == false) + { + return; + } + + if (strWayId == GatewayResourse.AppOldSelectGatewayId) + { + HdlGatewayLogic.Current.SaveGatewayIdToLocation(string.Empty); + } + //鍏抽棴鑷韩 + this.CloseForm(); + } + #endregion } } -- Gitblit v1.8.0