HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2020-09-18 c7df85937f73fb347ee0b19e9c052d2d00a6df6c
ZigbeeApp/Shared/Phone/CommonForm/CommonFormBase.cs
@@ -143,7 +143,8 @@
        /// </summary>
        /// <param name="gateWay">网关对象</param>
        /// <param name="online">在线状态变更后的状态</param>
        public virtual void GatewayOnlinePush(ZigBee.Device.ZbGateway gateWay, bool online)
        /// <param name="hadGwOnline">2020.05.25追加:此住宅是否拥有网关在线</param>
        public virtual void GatewayOnlinePush(ZigBee.Device.ZbGateway gateWay, bool online, bool hadGwOnline)
        {
        }
@@ -227,38 +228,10 @@
        /// <param name="msg">信息</param>
        /// <param name="action">单击确认后执行的回调函数</param>
        /// <param name="buttonText">按钮的文本</param>
        public void ShowMassage(ShowMsgType msgType, string msg, Action action = null, string buttonText = null)
        /// <param name="i_waitTime">等待时间,单位为秒,设置确认按钮在多长时间后才能够点击</param>
        public void ShowMassage(ShowMsgType msgType, string msg, Action action = null, string buttonText = null, int i_waitTime = -1)
        {
            //空对象时,不显示
            if (string.IsNullOrEmpty(msg))
            {
                return;
            }
            Application.RunOnMainThread(() =>
            {
                var alert = new ShowMsgControl(msgType, msg, buttonText);
                if (action != null)
                {
                    alert.ConfirmClickEvent += () =>
                    {
                        try
                        {
                            //回调函数
                            action?.Invoke();
                        }
                        catch (Exception ex)
                        {
                            //出现未知错误,数据丢失
                            this.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.uUnKnownError));
                            //Log出力
                            HdlLogLogic.Current.WriteLog(ex);
                        }
                        action = null;
                    };
                }
                alert.Show();
            });
            HdlMessageLogic.Current.ShowMassage(msgType, msg, action, buttonText, i_waitTime);
        }
        /// <summary>
@@ -287,8 +260,103 @@
            return HdlControlLogic.Current.GetPictrueRealSize(i_size);
        }
        /// <summary>
        /// 计算真实宽度(可能以后会变动,所以声明出来有用处)
        /// </summary>
        /// <param name="i_size"></param>
        /// <returns></returns>
        public int GetRealWidth(int i_size)
        {
            return HdlControlLogic.Current.GetRealWidth(i_size);
        }
        /// <summary>
        /// 计算真实高度度(可能以后会变动,所以声明出来有用处)
        /// </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>