hxb
2020-12-17 5eeafe3af80bfd88306bd8ad9e76c8f4b51ca35f
HDL_ON/UI/UI0-Public/Widget/ConfirmDialog.cs
New file
@@ -0,0 +1,181 @@

using System;
using Shared;
using HDL_ON.UI.CSS;
namespace HDL_ON.UI
{
    /// <summary>
    /// 通用二次确认界面
    /// 可以自定义按钮文字、提示内容支持多行显示
    /// </summary>
    public class ConfirmDialog : Dialog
    {
        /// <summary>
        ///
        /// </summary>
        public ConfirmDialog()
        {
        }
        /// <summary>
        /// 初始化Dialog
        /// </summary>
        /// <param name="titleStr"></param>
        /// <param name="msgStr"></param>
        /// <param name="okAction"></param>
        /// <param name="cancelAction"></param>
        /// <param name="cancelID"></param>
        /// <param name="confirmID"></param>
        void ShowDialogBase(string titleStr, string msgStr, Action okAction, Action cancelAction, int cancelID = StringId.Cancel, int confirmID = StringId.Confirm)
        {
            this.BackgroundColor = CSS_Color.DialogTransparentColor1;
            FrameLayout contentView = new FrameLayout()
            {
                Gravity = Gravity.Center,
                Width = Application.GetRealWidth(270),
                Height = Application.GetRealHeight(140),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                BorderColor = 0x00000000,
                BorderWidth = 0,
                Radius = (uint)Application.GetMinRealAverage(10),
            };
            this.AddChidren(contentView);
            Button btnTitle = new Button()
            {
                Y = Application.GetRealHeight(20),
                Height = Application.GetRealHeight(22),
                TextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextAlignment = TextAlignment.Center,
                IsBold = true,
                Text = titleStr,
            };
            contentView.AddChidren(btnTitle);
            int Width135 = Application.GetRealWidth(135);
            //提示内容按钮
            Button btnMsg = new Button()
            {
                Y = btnTitle.Bottom + Application.GetRealHeight(4),
                X = Application.GetRealWidth(6),
                Height = Application.GetRealHeight(46),
                Width = Application.GetRealWidth(258),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.TextualColor,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                Text = msgStr,
                IsMoreLines = true,
            };
            contentView.AddChidren(btnMsg);
            Button btnLine = new Button()
            {
                Y = Application.GetRealHeight(96),
                Height = Application.GetRealHeight(1),
                Width = Application.GetRealWidth(270 / 2),
                BackgroundColor = CSS_Color.DividingLineColor,
            };
            contentView.AddChidren(btnLine);
            Button btnCancel = new Button()
            {
                Y = btnLine.Bottom,
                Width = Width135,
                Height = Application.GetRealHeight(43),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.TextualColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = cancelID,
            };
            contentView.AddChidren(btnCancel);
            Button btnConfirm = new Button()
            {
                X = contentView.Width - Width135,
                Y = btnLine.Y,
                Width = Width135,
                Height = Application.GetRealHeight(45),
                TextAlignment = TextAlignment.Center,
                //TextColor = CSS_Color.TextualColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextColor = CSS_Color.MainBackgroundColor,
                BackgroundColor = CSS_Color.MainColor,
                TextID = confirmID,
            };
            contentView.AddChidren(btnConfirm);
            //例:右下圆角 大小为50
            int mRectCornerID = HDLUtils.RectCornerBottomRight;
            btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), mRectCornerID);
            btnCancel.MouseUpEventHandler += (sender, e) =>
            {
                this.Close();
                cancelAction?.Invoke();
            };
            btnConfirm.MouseUpEventHandler += (sender, e) =>
            {
                this.Close();
                okAction?.Invoke();
            };
            this.Show();
        }
        /// <summary>
        /// 加载提示Dialog
        /// </summary>
        /// <param name="titleId"></param>
        /// <param name="msgId"></param>
        /// <param name="callBackAction"></param>
        public void ShowDialog(int titleId, int msgId, Action okAction, Action cancelAction = null)
        {
            this.ShowDialogBase(Language.StringByID(titleId), Language.StringByID(msgId), okAction, cancelAction);
        }
        /// <summary>
        /// 加载提示Dialog
        /// 可以自定义按钮文字
        /// </summary>
        /// <param name="titleId"></param>
        /// <param name="msgId"></param>
        /// <param name="okAction"></param>
        /// <param name="cancelAction"></param>
        /// <param name="cancelID"></param>
        /// <param name="confirmID"></param>
        public void ShowDialog(int titleId, int msgId, Action okAction, Action cancelAction, int cancelID, int confirmID)
        {
            this.ShowDialogBase(Language.StringByID(titleId), Language.StringByID(msgId), okAction, cancelAction, cancelID, confirmID);
        }
        /// <summary>
        /// 加载提示Dialog
        /// </summary>
        /// <param name="titleId"></param>
        /// <param name="msgId"></param>
        /// <param name="callBackAction"></param>
        public void ShowDialog(string titleStr, string msgStr, Action okAction, Action cancelAction = null)
        {
            this.ShowDialogBase(titleStr, msgStr, okAction, cancelAction);
        }
        /// <summary>
        /// 加载提示Dialog
        /// 可以自定义按钮文字
        /// </summary>
        /// <param name="titleStr"></param>
        /// <param name="msgStr"></param>
        /// <param name="okAction"></param>
        /// <param name="cancelAction"></param>
        /// <param name="cancelID"></param>
        /// <param name="confirmID"></param>
        public void ShowDialog(string titleStr, string msgStr, Action okAction, Action cancelAction, int cancelID, int confirmID)
        {
            this.ShowDialogBase(titleStr, msgStr, okAction, cancelAction, cancelID, confirmID);
        }
    }
}