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/CommonForm/CommonFormBase.cs | 454 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 454 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/CommonForm/CommonFormBase.cs b/ZigbeeApp/Shared/Phone/CommonForm/CommonFormBase.cs new file mode 100644 index 0000000..2663989 --- /dev/null +++ b/ZigbeeApp/Shared/Phone/CommonForm/CommonFormBase.cs @@ -0,0 +1,454 @@ +锘縰sing Shared.Phone.UserCenter; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace Shared.Phone +{ + /// <summary> + /// 鐣岄潰鏈�鍩哄眰鐨勫簳灞傚叡閫� + /// </summary> + public class CommonFormBase : FrameLayout + { + #region 鈻� 鍙橀噺澹版槑___________________________ + + /// <summary> + /// 鐢婚潰鐨処D(鑷姩缂栧彿,鍞竴涓婚敭,鍜屽悇椤甸潰骞舵棤浠讳綍閫昏緫鍏崇郴,浣嗘槸瀹冪殑鐢ㄥ澶х潃鍛�) + /// </summary> + public string FormID = string.Empty; + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 鍒濆鍖栫晫闈㈡鏋� + /// </summary> + public virtual void InitForm() + { + //灏嗗綋鍓嶇殑鐢婚潰淇濆瓨鍒板唴瀛樺綋涓� + UserCenterLogic.AddActionForm(this); + //Log鍑哄姏 + HdlLogLogic.Current.WriteLog(1, this.FormID + " 鐣岄潰鎵撳紑"); + } + + /// <summary> + /// 鎵цShowForm()鏂规硶 + /// </summary> + /// <param name="parameter">鍚姩鍙傛暟</param> + public virtual void LoadShowFormMethod(params object[] parameter) + { + this.LoadFormMethodByName(this, "ShowForm", parameter); + } + + #endregion + + #region 鈻� 娣诲姞鐣岄潰___________________________ + + /// <summary> + /// 娣诲姞鐢婚潰,鍚姩鍙傛暟鐢辨寚瀹氱敾闈㈢殑ShowForm鍑芥暟鎵�鎸囧畾 + /// </summary> + /// <param name="parameter">鍚姩鍙傛暟锛氬弬鏁扮敱鎸囧畾鐢婚潰鐨凷howForm鍑芥暟鎵�鎸囧畾</param> + public virtual void AddForm(params object[] parameter) + { + //鍏抽棴杈撳叆娉曠晫闈� + this.CloseInputPanel(); + + return; + } + + /// <summary> + /// 娣诲姞鎸囧畾鐢婚潰锛屽苟绉婚櫎褰撳墠鐢婚潰锛屽惎鍔ㄥ弬鏁扮敱鎸囧畾鐢婚潰鐨凷howForm鍑芥暟鎵�鎸囧畾 + /// </summary> + /// <param name="form">鐩爣鐣岄潰</param> + /// <param name="parameter">鍚姩鍙傛暟锛氬弬鏁扮敱鎸囧畾鐢婚潰鐨凷howForm鍑芥暟鎵�鎸囧畾</param> + public void AddFromAndRemoveNowForm(CommonFormBase form, params object[] parameter) + { + //绉婚櫎褰撳墠鐢婚潰 + this.CloseForm(); + //娣诲姞鐢婚潰 + form.AddForm(parameter); + } + + #endregion + + #region 鈻� 鍏抽棴鐣岄潰___________________________ + + /// <summary> + /// 鐢婚潰鍏抽棴涔嬪墠(搴曞眰鍙樻洿,涓嶈兘閲嶈浇CloseForm鏂规硶浜�) + /// </summary> + public virtual void CloseFormBefore() + { + //鍏抽棴杈撳叆娉曠晫闈� + this.CloseInputPanel(); + } + + /// <summary> + /// 鐢婚潰鍏抽棴涔嬪悗(鏂板) + /// </summary> + public virtual void CloseFormAfter() + { + } + + /// <summary> + /// 鐢婚潰鍏抽棴 + /// </summary> + public void CloseForm() + { + //Log鍑哄姏 + HdlLogLogic.Current.WriteLog(1, this.FormID + " 鐣岄潰鍏抽棴"); + try + { + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(); + + //鐢婚潰鍏抽棴涔嬪墠 + this.CloseFormBefore(); + + //璋冪敤鐨勬槸Base鐨勭Щ闄ゆ帶浠跺嚱鏁� + //鑰屼笉鏄皟鐢╰his鐨勭Щ闄ゆ帶浠跺嚱 + base.RemoveFromParent(); + + //浠庡垪琛ㄤ腑绉婚櫎(闃叉鐢婚潰浜岄噸娣诲姞) + UserCenterLogic.RemoveActionForm(this); + + //鐢婚潰鍏抽棴涔嬪悗 + this.CloseFormAfter(); + } + catch (Exception ex) + { + //鍑虹幇鏈煡閿欒 + this.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.uUnKnownError)); + //Log鍑哄姏 + HdlLogLogic.Current.WriteLog(ex); + } + } + + /// <summary> + /// 鐢婚潰鍏抽棴(鍦ㄧ敾闈㈤噷闈紝璇蜂笉瑕佽皟鐢ㄦ鏂规硶锛岃浣跨敤CloseForm()鏂规硶) + /// </summary> + public override void RemoveFromParent() + { + //鐢婚潰鍙虫粦鏃讹紝鍏抽棴鐢婚潰锛岃皟鐢ㄨ嚜瀹氫箟鐨凜loseForm()鏂规硶 + this.CloseForm(); + } + + #endregion + + #region 鈻� 缃戝叧鍦ㄧ嚎鐘舵�佹帹閫乢__________________ + + /// <summary> + /// 缃戝叧鍦ㄧ嚎鐘舵�佸彉鏇存帹閫�(鍙湁鍦ㄥ彉鏇寸殑鏃跺�欐墠浼氭帹閫�) + /// </summary> + /// <param name="gateWay">缃戝叧瀵硅薄</param> + /// <param name="online">鍦ㄧ嚎鐘舵�佸彉鏇村悗鐨勭姸鎬�</param> + /// <param name="hadGwOnline">2020.05.25杩藉姞:姝や綇瀹呮槸鍚︽嫢鏈夌綉鍏冲湪绾�</param> + public virtual void GatewayOnlinePush(ZigBee.Device.ZbGateway gateWay, bool online, bool hadGwOnline) + { + } + + #endregion + + #region 鈻� 鍦嗗舰杩涘害鏉________________________ + + /// <summary> + /// 杩涘害鏉″惎鍔� + /// </summary> + /// <param name="text">鍒濆鏂囨湰</param> + public void ShowProgressBar(string text = "") + { + if (this.FormID != UserCenterResourse.NowActionFormID) + { + return; + } + ProgressBar.Show(text); + } + + /// <summary> + /// 璁剧疆杩涘害鏉$殑淇℃伅鍊�(浼氳嚜鍔ㄨ绠楃櫨鍒嗘瘮,鍊肩疮鍔犳ā寮�) + /// </summary> + /// <param name="value">鍊�</param> + public void SetProgressValue(decimal value) + { + ProgressBar.SetValue(value); + } + + /// <summary> + /// 璁剧疆杩涘害鏉$殑淇℃伅鍊� + /// </summary> + /// <param name="value">鍊�</param> + public void SetProgressValue(string value) + { + ProgressBar.SetValue(value); + } + + /// <summary> + /// 璁剧疆杩涘害鏉$殑淇℃伅鍊� + /// </summary> + /// <param name="value">鍊�</param> + public void SetProgressMax(decimal value) + { + if (value == 0) + { + value = 100; + } + ProgressBar.SetMaxValue(value); + } + + /// <summary> + /// 鍏抽棴杩涘害鏉� + /// </summary> + /// <param name="mode">鏄惁鏄剧ず閲嶆柊鍔犺浇鐨勭晫闈�</param> + public void CloseProgressBar(ShowReLoadMode mode = ShowReLoadMode.NO) + { + ProgressBar.Close(); + if (mode == ShowReLoadMode.YES) + { + //鏄剧ず閲嶆柊鍔犺浇鐨勭晫闈�(涓昏鏄敤鍦ㄧ晫闈㈠姞杞介敊璇椂锛屽啀娆″姞杞�) + this.ShowReLoadView(); + } + } + + /// <summary> + /// 鏄剧ず閲嶆柊鍔犺浇鐨勭晫闈�(涓昏鏄敤鍦ㄧ晫闈㈠姞杞介敊璇椂锛屽啀娆″姞杞�) + /// </summary> + public virtual void ShowReLoadView() + { + } + + #endregion + + #region 鈻� 涓�鑸殑鏂规硶_________________________ + + /// <summary> + /// 鏄剧ず淇℃伅妗� + /// </summary> + /// <param name="msgType">淇℃伅绫诲瀷</param> + /// <param name="msg">淇℃伅</param> + /// <param name="action">鍗曞嚮纭鍚庢墽琛岀殑鍥炶皟鍑芥暟</param> + /// <param name="buttonText">鎸夐挳鐨勬枃鏈�</param> + /// <param name="i_waitTime">绛夊緟鏃堕棿,鍗曚綅涓虹,璁剧疆纭鎸夐挳鍦ㄥ闀挎椂闂村悗鎵嶈兘澶熺偣鍑�</param> + public void ShowMassage(ShowMsgType msgType, string msg, Action action = null, string buttonText = null, int i_waitTime = -1) + { + HdlMessageLogic.Current.ShowMassage(msgType, msg, action, buttonText, i_waitTime); + } + + /// <summary> + /// 鍒ゆ柇褰撳墠姝e湪娲诲姩鐨勭晫闈㈡槸鍚︽槸褰撳墠杩欎釜鐣岄潰 + /// </summary> + /// <returns></returns> + public bool NowFormIsAction() + { + return UserCenterResourse.NowActionFormID == this.FormID; + } + + /// <summary> + /// 鍏抽棴杈撳叆娉曠晫闈�(鏈疄鐜�) + /// </summary> + public void CloseInputPanel() + { + } + + /// <summary> + /// 璁$畻鍥剧墖鐨勭湡瀹為珮瀹藉害 + /// </summary> + /// <param name="i_size"></param> + /// <returns></returns> + public int GetPictrueRealSize(int i_size) + { + return HdlControlLogic.Current.GetPictrueRealSize(i_size); + } + + /// <summary> + /// 璁$畻鐪熷疄瀹藉害(鍙兘浠ュ悗浼氬彉鍔�,鎵�浠ュ0鏄庡嚭鏉ユ湁鐢ㄥ) + /// </summary> + /// <param name="i_size"></param> + /// <returns></returns> + public int GetRealWidth(int i_size) + { + return HdlControlLogic.Current.GetRealWidth(i_size); + } + + /// <summary> + /// 璁$畻鐪熷疄楂樺害搴�(鍙兘浠ュ悗浼氬彉鍔�,鎵�浠ュ0鏄庡嚭鏉ユ湁鐢ㄥ) + /// </summary> + /// <param name="i_size"></param> + /// <returns></returns> + public int GetRealHeight(int i_size) + { + return HdlControlLogic.Current.GetRealHeight(i_size); + } + + /// <summary> + /// 璁$畻鐪熷疄澶у皬(杩欎釜涓滆タ鏈夌壒娈婄敤澶�,鑰冭檻鍒板姞闀垮瀷灞忓箷鐨勬帶浠�,璋冪敤姝ゆ柟娉�) + /// </summary> + /// <param name="i_size"></param> + /// <returns></returns> + public int GetRealSizeEx(int i_size) + { + return HdlControlLogic.Current.GetRealSizeEx(i_size); + } + + /// <summary> + /// 鍒ゆ柇鎸囧畾鐨勭晫闈㈡槸鍚︽墦寮� + /// </summary> + /// <param name="formId"></param> + /// <returns></returns> + public bool IsFormOpen(string formId) + { + return UserCenterResourse.DicActionForm.ContainsKey(formId); + } + + #endregion + + #region 鈻� 妫�娴嬮敊璇痏__________________________ + + /// <summary> + /// 妫�娴嬬晫闈㈢殑閿欒 + /// </summary> + /// <returns></returns> + public virtual bool CheckForm() + { + //妫�娴嬫帶浠� + return this.CheckControl(this); + } + + /// <summary> + /// 妫�娴嬫帶浠� + /// </summary> + /// <param name="view"></param> + /// <returns></returns> + private bool CheckControl(View view) + { + //绗竴涓繘鏉ヨ偗瀹氭槸 ViewGroup + if (view is ViewGroup) + { + var viewGroup = (ViewGroup)view; + for (int i = 0; i < viewGroup.ChildrenCount; i++) + { + var myView = viewGroup.GetChildren(i); + if (myView is ViewGroup) + { + //閫掑綊妫�娴� + bool result = this.CheckControl(myView); + if (result == false) + { + return false; + } + continue; + } + if (myView is TextInputControl) + { + //妫�娴嬭緭鍏ユ鐨勯敊璇� + var error = ((TextInputControl)myView).CheckError(); + if (error != null) + { + this.ShowMassage(ShowMsgType.Tip, error); + ((TextInputControl)myView).OnError = true; + return false; + } + ((TextInputControl)myView).OnError = false; + } + } + } + return true; + } + + #endregion + + #region 鈻� 鍙嶅皠鏂规硶___________________________ + + /// <summary> + /// 鍏抽棴鎸囧畾鐨勭敾闈� + /// </summary> + /// <param name="formName">鎸囧畾瑕佸叧闂殑鐢婚潰鑻辨枃鍚嶅瓧</param> + public void CloseFormByFormName(string formName) + { + if (UserCenterResourse.DicActionForm.ContainsKey(formName) == false) + { + return; + } + //鍏抽棴鎸囧畾鐢婚潰 + UserCenterResourse.DicActionForm[formName]?.CloseForm(); + } + + /// <summary> + /// 鎵ц鎸囧畾鐢婚潰鐨勬柟娉� + /// </summary> + /// <param name="formName">鎸囧畾鐢婚潰鐨勮嫳鏂囧悕</param> + /// <param name="method">鎸囧畾瑕佸姞杞界殑鏂规硶鍚�</param> + /// <param name="parameter">鍚姩鍙傛暟</param> + public object LoadFormMethodByName(string formName, string method, params object[] parameter) + { + if (UserCenterResourse.DicActionForm.ContainsKey(formName) == false) + { + return null; + } + var form = UserCenterResourse.DicActionForm[formName]; + return this.LoadFormMethodByName(form, method, parameter); + } + + /// <summary> + /// 鎵ц鎸囧畾鐢婚潰鐨勬柟娉�(娉ㄦ剰锛氳繖涓槸涓撻棬璋冪敤寮傛锛屽苟涓旂瓑寰呭紓姝ュ畬鎴愮殑楂樼鎶�鍑芥暟,涓嶈皟鐢ㄥ紓姝ョ殑鎯呭喌锛屽埆浣跨敤姝ゅ嚱鏁�) + /// </summary> + /// <param name="formName">鎸囧畾鐢婚潰鐨勮嫳鏂囧悕</param> + /// <param name="method">鎸囧畾瑕佸姞杞界殑鏂规硶鍚�</param> + /// <param name="parameter">鍚姩鍙傛暟</param> + public async Task<object> LoadFormMethodByNameAsync(string formName, string method, params object[] parameter) + { + if (UserCenterResourse.DicActionForm.ContainsKey(formName) == false) + { + return null; + } + var form = UserCenterResourse.DicActionForm[formName]; + var task = this.LoadFormMethodByName(form, method, parameter) as Task; + await task; + + var result = task.GetType().GetProperty("Result").GetValue(task, null); + return result; + } + + /// <summary> + /// 鎵ц鎸囧畾鐢婚潰鐨勬柟娉� + /// </summary> + /// <param name="form">鎸囧畾鐢婚潰鐨勮嫳鏂囧悕</param> + /// <param name="method">鎸囧畾瑕佸姞杞界殑鏂规硶鍚�</param> + /// <param name="parameter">鍚姩鍙傛暟</param> + public object LoadFormMethodByName(CommonFormBase form, string method, params object[] parameter) + { + try + { + if (form == null) + { + return null; + } + var myMethod = form.GetType().GetMethod(method); + return myMethod.Invoke(form, parameter); + } + catch (Exception ex) + { + //鍑虹幇鏈煡閿欒,鏁版嵁涓㈠け + this.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.uUnKnownError)); + //Log鍑哄姏 + HdlLogLogic.Current.WriteLog(ex); + return null; + } + } + + /// <summary> + /// 浣跨敤鍙嶅皠鏂规硶锛屾墦寮�鎸囧畾鐨勭敾闈�(鍙敮鎸佺户鎵夸簬UserCenterCommonForm鐨勭敾闈�) + /// </summary> + /// <param name="fullName">鐢婚潰鐨勫懡鍚嶇┖闂�+鐢婚潰鐨勮嫳鏂囧悕</param> + /// <param name="parameter">鍚姩鍙傛暟</param> + public void LoadFormByFullName(string fullName, params object[] parameter) + { + System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); + var form = (CommonFormBase)assembly.CreateInstance(fullName); + form.AddForm(parameter); + } + + #endregion + + } +} -- Gitblit v1.8.0