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