HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2020-12-14 e90209beae6a4e822cecb18e6889f8bda23f630e
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/TextInputControls/DialogInputControl.cs
old mode 100755 new mode 100644
@@ -1,258 +1,186 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone.UserCenter
{
    /// <summary>
    /// <para>做成一个弹窗型,左下角是【取消按钮】,右下角是【确认按钮】的弹窗控件</para>
    /// <para>New的时候,就已经加入到了界面</para>
    /// </summary>
    public class DialogInputControl : FrameLayout
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 确认按钮事件
        /// </summary>
        public Action<string> ComfirmClickEvent;
        /// <summary>
        /// 输入框的文本信息
        /// </summary>
        public string Text
        {
            get { return txtInput.Text.Trim(); }
            set { this.txtInput.Text = value; }
        }
        /// <summary>
        /// 输入框控件
        /// </summary>
        private TextInputControl txtInput = null;
        /// <summary>
        /// 标题控件
        /// </summary>
        private NormalViewControl btnTitle = null;
        /// <summary>
        /// 取消按钮
        /// </summary>
        private NormalViewControl btnCancel = null;
        /// <summary>
        /// 确认按钮
        /// </summary>
        private NormalViewControl btnConfirm = null;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// <para>做成一个弹窗型,左下角是【取消按钮】,右下角是【确认按钮】的弹窗控件</para>
        /// <para>New的时候,就已经加入到了界面</para>
        /// </summary>
        public DialogInputControl()
        {
            //添加界面
            var nowForm = UserView.HomePage.Instance.GetChildren(UserView.HomePage.Instance.ChildrenCount - 1);
            if (nowForm == null || (nowForm is ViewGroup) == false)
            {
                return;
            }
            this.BackgroundColor = UserCenterColor.Current.DialogBackColor;
            ((ViewGroup)nowForm).AddChidren(this);
            //白色背景框
            var frameBack = new FrameLayout();
            frameBack.Height = Application.GetRealHeight(507);
            frameBack.Width = Application.GetRealWidth(792);
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            frameBack.Y = Application.GetRealHeight(691);
            frameBack.Gravity = Gravity.CenterHorizontal;
            frameBack.Radius = 8;
            this.AddChidren(frameBack);
            //标题信息
            this.btnTitle = new NormalViewControl(frameBack.Width, Application.GetRealHeight(65), false);
            btnTitle.Y = Application.GetRealHeight(68);
            btnTitle.TextColor = UserCenterColor.Current.TextColor1;
            btnTitle.TextSize = 16;
            btnTitle.TextAlignment = TextAlignment.Center;
            frameBack.AddChidren(btnTitle);
            //初始化边框
            var frameText = new FrameLayout();
            frameText.Width = Application.GetRealWidth(677);
            frameText.Height = Application.GetRealHeight(100);
            frameText.Y = Application.GetRealHeight(198);
            frameText.Gravity = Gravity.CenterHorizontal;
            frameText.BorderColor = 0xff676767;
            frameText.BorderWidth = 1;
            frameText.Radius = 8;
            frameBack.AddChidren(frameText);
            //输入框
            this.txtInput = new TextInputControl(frameText.Width - Application.GetRealWidth(20), frameText.Height, false);
            txtInput.TextAlignment = TextAlignment.Center;
            txtInput.Gravity = Gravity.CenterHorizontal;
            frameText.AddChidren(txtInput);
            //取消
            var frameCancel = new FrameLayoutControl();
            frameCancel.Height = Application.GetRealHeight(127);
            frameCancel.Width = Application.GetRealWidth(396);
            frameCancel.Gravity = Gravity.BottomLeft;
            frameCancel.Radius = 8;
            frameCancel.BackgroundColor = 0xfff5f6fa;
            frameBack.AddChidren(frameCancel);
            //把上圆角覆盖为方角
            var btnTopTemp1 = new NormalViewControl(frameCancel.Width, Application.GetRealHeight(40), false);
            btnTopTemp1.BackgroundColor = 0xfff5f6fa;
            frameCancel.AddChidren(btnTopTemp1, ChidrenBindMode.BindEventOnly);
            //把右下圆角覆盖为方角
            var btnBomTemp1 = new NormalViewControl(frameCancel.Width / 2, Application.GetRealHeight(40), false);
            btnBomTemp1.BackgroundColor = 0xfff5f6fa;
            btnBomTemp1.Gravity = Gravity.BottomRight;
            frameCancel.AddChidren(btnBomTemp1, ChidrenBindMode.BindEventOnly);
            //取消按钮
            this.btnCancel = new NormalViewControl(frameCancel.Width - Application.GetRealWidth(10), Application.GetRealHeight(60), false);
            btnCancel.Gravity = Gravity.Center;
            btnCancel.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnCancel.TextID = R.MyInternationalizationString.uCancel;
            btnCancel.TextAlignment = TextAlignment.Center;
            btnCancel.BackgroundColor = 0xfff5f6fa;
            frameCancel.AddChidren(btnCancel, ChidrenBindMode.BindEventOnly);
            frameCancel.ButtonClickEvent += (sender, e) =>
            {
                //移除界面
                this.CloseDialog();
            };
            //重写控件点击状态
            frameCancel.SelectStatuEvent += (statu) =>
            {
                if (statu == true)
                {
                    frameCancel.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
                    btnTopTemp1.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
                    btnBomTemp1.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
                    btnCancel.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
                }
                else
                {
                    frameCancel.BackgroundColor = 0xfff5f6fa;
                    btnTopTemp1.BackgroundColor = 0xfff5f6fa;
                    btnBomTemp1.BackgroundColor = 0xfff5f6fa;
                    btnCancel.BackgroundColor = 0xfff5f6fa;
                }
            };
            //确认
            var frameConfirm = new FrameLayoutControl();
            frameConfirm.Height = Application.GetRealHeight(127);
            frameConfirm.Width = Application.GetRealWidth(396);
            frameConfirm.Gravity = Gravity.BottomRight;
            frameConfirm.Radius = 8;
            frameConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
            frameBack.AddChidren(frameConfirm);
            //把上圆角覆盖为方角
            var btnTopTemp2 = new NormalViewControl(frameConfirm.Width, Application.GetRealHeight(40), false);
            btnTopTemp2.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
            frameConfirm.AddChidren(btnTopTemp2, ChidrenBindMode.BindEventOnly);
            //把左下圆角覆盖为方角
            var btnBomTemp2 = new NormalViewControl(frameConfirm.Width / 2, Application.GetRealHeight(40), false);
            btnBomTemp2.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
            btnBomTemp2.Gravity = Gravity.BottomLeft;
            frameConfirm.AddChidren(btnBomTemp2, ChidrenBindMode.BindEventOnly);
            //确认按钮
            this.btnConfirm = new NormalViewControl(frameConfirm.Width - Application.GetRealWidth(10), Application.GetRealHeight(60), false);
            btnConfirm.Gravity = Gravity.Center;
            btnConfirm.TextColor = UserCenterColor.Current.White;
            btnConfirm.TextID = R.MyInternationalizationString.OkMsg;
            btnConfirm.TextAlignment = TextAlignment.Center;
            frameConfirm.AddChidren(btnConfirm, ChidrenBindMode.BindEventOnly);
            frameConfirm.ButtonClickEvent += (sender, e) =>
            {
                if (this.Text == string.Empty && string.IsNullOrEmpty(this.txtInput.PlaceholderText) == false)
                {
                    var alert = new ShowMsgControl(ShowMsgType.Tip, this.txtInput.PlaceholderText);
                    alert.Show();
                    return;
                }
                //回调函数
                this.ComfirmClickEvent?.Invoke(this.Text);
            };
            //重写控件点击状态
            frameConfirm.SelectStatuEvent += (statu) =>
            {
                if (statu == true)
                {
                    frameConfirm.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
                    btnTopTemp2.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
                    btnBomTemp2.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
                    btnConfirm.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
                }
                else
                {
                    frameConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
                    btnTopTemp2.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
                    btnBomTemp2.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
                    btnConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
                }
            };
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
        /// 画面关闭
        /// </summary>
        public void CloseDialog()
        {
            this.ComfirmClickEvent = null;
            this.RemoveFromParent();
        }
        #endregion
        #region ■ 设置信息___________________________
        /// <summary>
        /// 设置标题信息
        /// </summary>
        /// <param name="txtValue"></param>
        public void SetTitleText(string txtValue)
        {
            this.btnTitle.Text = txtValue;
        }
        /// <summary>
        /// 设置取消按钮的文本信息
        /// </summary>
        /// <param name="txtValue"></param>
        public void SetCancelButtonText(string txtValue)
        {
            this.btnCancel.Text = txtValue;
        }
        /// <summary>
        /// 设置确定按钮的文本信息
        /// </summary>
        /// <param name="txtValue"></param>
        public void SetOkButtonText(string txtValue)
        {
            this.btnConfirm.Text = txtValue;
        }
        /// <summary>
        /// 设置输入框灰色字体说明
        /// </summary>
        /// <param name="txtValue"></param>
        public void SetTipText(string txtValue)
        {
            if (this.txtInput != null)
            {
                this.txtInput.PlaceholderText = txtValue;
            }
        }
        #endregion
    }
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone.UserCenter
{
    /// <summary>
    /// <para>做成一个弹窗型,左下角是【取消按钮】,右下角是【确认按钮】的弹窗控件</para>
    /// <para>New的时候,就已经加入到了界面</para>
    /// </summary>
    public class DialogInputControl : FrameLayout
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 确认按钮事件
        /// </summary>
        public Action<string> ComfirmClickEvent;
        /// <summary>
        /// 输入框的文本信息
        /// </summary>
        public string Text
        {
            get { return txtInput.Text.Trim(); }
            set { this.txtInput.Text = value; }
        }
        /// <summary>
        /// 输入框控件
        /// </summary>
        private TextInputControl txtInput = null;
        /// <summary>
        /// 标题控件
        /// </summary>
        private NormalViewControl btnTitle = null;
        /// <summary>
        /// 取消按钮
        /// </summary>
        private BottomLeftClickButton btnCancel = null;
        /// <summary>
        /// 确认按钮
        /// </summary>
        private BottomRightClickButton btnConfirm = null;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// <para>做成一个弹窗型,左下角是【取消按钮】,右下角是【确认按钮】的弹窗控件</para>
        /// <para>New的时候,就已经加入到了界面</para>
        /// </summary>
        /// <param name="i_MaxByte">文本框最大输入的byte数(默认36个byte)</param>
        public DialogInputControl(int i_MaxByte = 36)
        {
            //添加界面
            var nowForm = UserView.HomePage.Instance.GetChildren(UserView.HomePage.Instance.ChildrenCount - 1);
            if (nowForm == null || (nowForm is ViewGroup) == false)
            {
                return;
            }
            this.BackgroundColor = UserCenterColor.Current.DialogBackColor;
            ((ViewGroup)nowForm).AddChidren(this);
            //白色背景框
            var frameBack = new FrameLayout();
            frameBack.Height = Application.GetRealHeight(507);
            frameBack.Width = Application.GetRealWidth(792);
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            frameBack.Y = Application.GetRealHeight(691);
            frameBack.Gravity = Gravity.CenterHorizontal;
            frameBack.Radius = (uint)Application.GetRealHeight(17);
            this.AddChidren(frameBack);
            //标题信息
            this.btnTitle = new NormalViewControl(frameBack.Width, Application.GetRealHeight(65), false);
            btnTitle.Y = Application.GetRealHeight(68);
            btnTitle.TextColor = UserCenterColor.Current.TextColor1;
            btnTitle.TextSize = 16;
            btnTitle.TextAlignment = TextAlignment.Center;
            frameBack.AddChidren(btnTitle);
            //初始化边框
            var frameText = new FrameLayout();
            frameText.Width = Application.GetRealWidth(677);
            frameText.Height = Application.GetRealHeight(100);
            frameText.Y = Application.GetRealHeight(198);
            frameText.Gravity = Gravity.CenterHorizontal;
            frameText.BorderColor = 0xff676767;
            frameText.BorderWidth = 1;
            frameText.Radius = (uint)Application.GetRealHeight(17);
            frameBack.AddChidren(frameText);
            //输入框
            this.txtInput = new TextInputControl(frameText.Width - Application.GetRealWidth(20), frameText.Height, false);
            txtInput.TextAlignment = TextAlignment.Center;
            txtInput.Gravity = Gravity.CenterHorizontal;
            frameText.AddChidren(txtInput);
            if (i_MaxByte > 0)
            {
                this.txtInput.MaxByte = i_MaxByte;
            }
            //取消
            this.btnCancel = new BottomLeftClickButton(Application.GetRealWidth(396), Application.GetRealHeight(127));
            frameBack.AddChidren(btnCancel);
            btnCancel.InitControl(Language.StringByID(R.MyInternationalizationString.uCancel));
            btnCancel.ButtonClickEvent += (sender, e) =>
            {
                //移除界面
                this.CloseDialog();
            };
            //确认
            this.btnConfirm = new BottomRightClickButton(frameBack.Width - btnCancel.Width, btnCancel.Height);
            frameBack.AddChidren(btnConfirm);
            btnConfirm.InitControl(Language.StringByID(R.MyInternationalizationString.OkMsg));
            btnConfirm.ButtonClickEvent += (sender, e) =>
            {
                if (this.Text == string.Empty && string.IsNullOrEmpty(this.txtInput.PlaceholderText) == false)
                {
                    var alert = new ShowMsgControl(ShowMsgType.Tip, this.txtInput.PlaceholderText);
                    alert.Show();
                    return;
                }
                //回调函数
                this.ComfirmClickEvent?.Invoke(this.Text);
            };
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
        /// 画面关闭
        /// </summary>
        public void CloseDialog()
        {
            this.ComfirmClickEvent = null;
            this.RemoveFromParent();
        }
        #endregion
        #region ■ 设置信息___________________________
        /// <summary>
        /// 设置标题信息
        /// </summary>
        /// <param name="txtValue"></param>
        public void SetTitleText(string txtValue)
        {
            this.btnTitle.Text = txtValue;
        }
        /// <summary>
        /// 设置取消按钮的文本信息
        /// </summary>
        /// <param name="txtValue"></param>
        public void SetCancelButtonText(string txtValue)
        {
            this.btnCancel.SetButtonText(txtValue);
        }
        /// <summary>
        /// 设置确定按钮的文本信息
        /// </summary>
        /// <param name="txtValue"></param>
        public void SetOkButtonText(string txtValue)
        {
            this.btnConfirm.SetButtonText(txtValue);
        }
        /// <summary>
        /// 设置输入框灰色字体说明
        /// </summary>
        /// <param name="txtValue"></param>
        public void SetTipText(string txtValue)
        {
            if (this.txtInput != null)
            {
                this.txtInput.PlaceholderText = txtValue;
            }
        }
        #endregion
    }
}