From dc0309e64f02227d8e1468b7326c07955f804612 Mon Sep 17 00:00:00 2001 From: chenqiyang <1406175257@qq.com> Date: 星期三, 22 六月 2022 11:22:18 +0800 Subject: [PATCH] 修改引用路径 --- ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/MessageControls/ShowMsgControl.cs | 403 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 403 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/MessageControls/ShowMsgControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/MessageControls/ShowMsgControl.cs new file mode 100644 index 0000000..ca209a0 --- /dev/null +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/MessageControls/ShowMsgControl.cs @@ -0,0 +1,403 @@ +锘縰sing System; +using System.Text; + +namespace Shared.Phone.UserCenter +{ + /// <summary> + /// 鏄剧ず涓�涓俊鎭 + /// </summary> + public class ShowMsgControl + { + #region 鈻� 鍙橀噺澹版槑___________________________ + + /// <summary> + /// 鐐瑰嚮纭鐨勪簨浠� + /// </summary> + public Action ConfirmClickEvent = null; + /// <summary> + /// 鐐瑰嚮鍙栨秷鐨勪簨浠� + /// </summary> + public Action CancelClickEvent = null; + /// <summary> + /// 鐐瑰嚮鑳屾櫙鏄惁鍏抽棴寮圭獥 + /// </summary> + public bool CloseByClickBack = true; + /// <summary> + /// 淇℃伅绫诲瀷 + /// </summary> + private ShowMsgType msgType = ShowMsgType.Confirm; + /// <summary> + /// 娑堟伅 + /// </summary> + private string msgText = string.Empty; + /// <summary> + /// 纭鎸夐挳鐨勬枃鏈� + /// </summary> + private string buttonOkText = null; + /// <summary> + /// 鍙栨秷鎸夐挳鐨勬枃鏈� + /// </summary> + private string buttonCancelText = null; + /// <summary> + /// 鎻愮ず鎺т欢 + /// </summary> + private Tip myTip = null; + /// <summary> + /// 绛夊緟鏃堕棿 + /// </summary> + private int WaitTime = -1; + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 鏄剧ず涓�涓渶瑕佺‘璁ょ殑淇℃伅妗� + /// </summary> + /// <param name="i_msgType">淇℃伅绫诲瀷</param> + /// <param name="i_msg">淇℃伅</param> + /// <param name="i_buttonOkText">纭鎸夐挳鐨勬枃鏈�</param> + /// <param name="i_buttonCancelText">鍙栨秷鎸夐挳鐨勬枃鏈�</param> + /// <param name="i_waitTime">绛夊緟鏃堕棿,鍗曚綅涓虹,璁剧疆纭鎸夐挳鍦ㄥ闀挎椂闂村悗鎵嶈兘澶熺偣鍑�</param> + public ShowMsgControl(ShowMsgType i_msgType, string i_msg, string i_buttonOkText = null, string i_buttonCancelText = null, int i_waitTime = -1) + { + //纭鎸夐挳鏂囨湰 + this.buttonOkText = i_buttonOkText == null ? Language.StringByID(R.MyInternationalizationString.OkMsg) : i_buttonOkText; + this.buttonCancelText = i_buttonCancelText == null ? Language.StringByID(R.MyInternationalizationString.uCancel) : i_buttonCancelText; + this.msgType = i_msgType; + this.msgText = i_msg; + this.WaitTime = i_waitTime; + + if (i_msgType == ShowMsgType.Tip) + { + myTip = new Tip(); + myTip.Direction = AMPopTipDirection.None; + myTip.CloseTime = 2; + myTip.Text = i_msg; + } + } + + #endregion + + #region 鈻� 鏄剧ず娑堟伅___________________________ + + /// <summary> + /// 鏄剧ず + /// </summary> + public void Show() + { + try + { + if (myTip != null) + { + myTip.Show(Common.CommonPage.Instance); + myTip = null; + return; + } + //鍒濆鍖栨帶浠� + this.InitMsgControl(); + } + catch (Exception ex) { HdlLogLogic.Current.WriteLog(ex); } + } + + #endregion + + #region 鈻� 鍒濆鍖栨帶浠禵________________________ + + /// <summary> + /// 鍒濆鍖栨帶浠� + /// </summary> + private void InitMsgControl() + { + //涓绘帶浠� + var frameMain = new NormalFrameLayout(); + frameMain.MainKey = "ShowMsg"; + frameMain.BackgroundColor = UserCenterColor.Current.DialogBackColor; + Common.CommonPage.Instance.AddChidren(frameMain); + frameMain.MouseUpEventHandler += (sender, e) => + { + if (this.CloseByClickBack == true) + { + //绉婚櫎鐣岄潰 + frameMain.RemoveFromParent(); + this.ConfirmClickEvent = null; + } + }; + + //鐧借壊鑳屾櫙妗� + var frameBack = new FrameLayout(); + frameBack.Height = Application.GetRealHeight(478); + frameBack.Width = Application.GetRealWidth(792); + frameBack.BackgroundColor = UserCenterColor.Current.White; + frameBack.Y = Application.GetRealHeight(706); + frameBack.Gravity = Gravity.CenterHorizontal; + frameBack.Radius = (uint)Application.GetRealHeight(17); + frameMain.AddChidren(frameBack); + //鏍囬 + var btnTitle = new NormalViewControl(frameBack.Width, Application.GetRealHeight(65), false); + btnTitle.Y = Application.GetRealHeight(68); + btnTitle.TextColor = 0xff333443; + btnTitle.TextAlignment = TextAlignment.Center; + btnTitle.TextSize = 16; + frameBack.AddChidren(btnTitle); + if (msgType == ShowMsgType.Normal) + { + btnTitle.TextID = R.MyInternationalizationString.NormalTip; + } + else if (msgType == ShowMsgType.Error) + { + btnTitle.TextID = R.MyInternationalizationString.ErrorTip; + } + else if (msgType == ShowMsgType.Confirm) + { + btnTitle.TextID = R.MyInternationalizationString.NormalTip; + } + else if (msgType == ShowMsgType.Remind) + { + btnTitle.TextID = R.MyInternationalizationString.uRemind; + } + + //娑堟伅 + var btnMsg = new NormalViewControl(frameBack.Width - Application.GetRealWidth(55 * 2), Application.GetRealHeight(180), false); + btnMsg.Y = Application.GetRealHeight(141); + btnMsg.IsMoreLines = true; + btnMsg.TextAlignment = TextAlignment.Center; + btnMsg.TextColor = UserCenterColor.Current.TextGrayColor1; + btnMsg.Gravity = Gravity.CenterHorizontal; + btnMsg.Text = msgText; + frameBack.AddChidren(btnMsg); + + if (msgType == ShowMsgType.Confirm) + { + //鍒濆鍖栫‘璁ょ被鍨嬬殑搴曢儴鎸夐挳 + this.InitBottomConfirmButton(frameMain, frameBack); + } + else + { + //鍒濆鍖栨櫘閫氱被鍨嬬殑搴曢儴鎸夐挳 + this.InitBottomNormalButton(frameMain, frameBack); + } + } + + /// <summary> + /// 鍒濆鍖栫‘璁ょ被鍨嬬殑搴曢儴鎸夐挳 + /// </summary> + /// <param name="frameMain"></param> + /// <param name="frameBack"></param> + private void InitBottomConfirmButton(NormalFrameLayout frameMain, FrameLayout frameBack) + { + //鍙栨秷鎸夐挳 + var btnCancel = new BottomLeftClickButton(Application.GetRealWidth(396), Application.GetRealHeight(127)); + frameBack.AddChidren(btnCancel); + btnCancel.InitControl(this.buttonCancelText); + btnCancel.ButtonClickEvent += (sender, e) => + { + //绉婚櫎鐣岄潰 + frameMain.RemoveFromParent(); + //鍥炶皟鍑芥暟 + this.CancelClickEvent?.Invoke(); + this.ConfirmClickEvent = null; + this.CancelClickEvent = null; + }; + + //纭畾鎸夐挳 + var btnConfirm = new BottomRightClickButton(frameBack.Width - btnCancel.Width, btnCancel.Height); + frameBack.AddChidren(btnConfirm); + btnConfirm.InitControl(this.buttonOkText); + btnConfirm.ButtonClickEvent += (sender, e) => + { + //绉婚櫎鐣岄潰 + frameMain.RemoveFromParent(); + //鍥炶皟鍑芥暟 + this.ConfirmClickEvent?.Invoke(); + this.ConfirmClickEvent = null; + this.CancelClickEvent = null; + }; + //寮�鍚瓑寰呮椂闂� + this.StartWaitTime(btnConfirm); + } + + /// <summary> + /// 鍒濆鍖栨櫘閫氱被鍨嬬殑搴曢儴鎸夐挳 + /// </summary> + /// <param name="frameMain"></param> + /// <param name="frameBack"></param> + private void InitBottomNormalButton(NormalFrameLayout frameMain, FrameLayout frameBack) + { +#if Android + //纭 + var frameConfirm = new FrameLayoutStatuControl(); + frameConfirm.Height = Application.GetRealHeight(127); + frameConfirm.Width = frameBack.Width; + frameConfirm.Gravity = Gravity.BottomCenter; + frameConfirm.RadiusEx = 17; + frameConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor; + frameBack.AddChidren(frameConfirm); + //鎶婁笂鍦嗚瑕嗙洊涓烘柟瑙� + var btnTopTemp2 = new NormalViewControl(frameConfirm.Width, Application.GetRealHeight(35), false); + btnTopTemp2.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor; + frameConfirm.AddChidren(btnTopTemp2, ChidrenBindMode.BindEvent); + //纭鎸夐挳 + var btnConfirm = new NormalViewControl(frameConfirm.Width - Application.GetRealWidth(10), Application.GetRealHeight(60), false); + btnConfirm.Gravity = Gravity.Center; + btnConfirm.TextColor = UserCenterColor.Current.White; + btnConfirm.Text = buttonOkText; + btnConfirm.TextAlignment = TextAlignment.Center; + frameConfirm.AddChidren(btnConfirm, ChidrenBindMode.BindEvent); + frameConfirm.ButtonClickEvent += (sender, e) => + { + //绉婚櫎鐣岄潰 + frameMain.RemoveFromParent(); + //鍥炶皟鍑芥暟 + this.ConfirmClickEvent?.Invoke(); + this.ConfirmClickEvent = null; + }; + //閲嶅啓鎺т欢鐐瑰嚮鐘舵�� + frameConfirm.SelectStatuEvent += (statu) => + { + if (statu == true) + { + frameConfirm.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor; + btnTopTemp2.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor; + btnConfirm.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor; + } + else + { + frameConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor; + btnTopTemp2.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor; + btnConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor; + } + }; +#endif +#if iOS + //纭鎸夐挳 + var btnConfirm = new NormalClickButton(frameBack.Width, Application.GetRealHeight(127), false); + btnConfirm.Gravity = Gravity.BottomCenter; + btnConfirm.TextColor = UserCenterColor.Current.White; + btnConfirm.Text = buttonOkText; + btnConfirm.TextAlignment = TextAlignment.Center; + btnConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor; + btnConfirm.oldBackgroundColor = UserCenterColor.Current.ClickButtonDefultColor; + frameBack.AddChidren(btnConfirm); + btnConfirm.ButtonClickEvent += (sender, e) => + { + //绉婚櫎鐣岄潰 + frameMain.RemoveFromParent(); + //鍥炶皟鍑芥暟 + this.ConfirmClickEvent?.Invoke(); + this.ConfirmClickEvent = null; + }; +#endif + //寮�鍚瓑寰呮椂闂� + this.StartWaitTime(btnConfirm); + } + + #endregion + + #region 鈻� 寮�鍚瓑寰呮椂闂確______________________ + + /// <summary> + /// 寮�鍚瓑寰呮椂闂�(姝ゅ嚱鏁板彧鐢ㄤ簬瀹夊崜) + /// </summary> + /// <param name="btnConfirm">纭鎸夐挳</param> + private void StartWaitTime(BottomRightClickButton btnConfirm) + { + if (this.WaitTime <= 0) + { + return; + } + + btnConfirm.CanClick = false; + HdlThreadLogic.Current.RunThread(() => + { + //鏄剧ず鍓╀綑绛夊緟鏃堕棿 + while (btnConfirm.Parent != null && this.WaitTime >= 0) + { + HdlThreadLogic.Current.RunMain(() => + { + btnConfirm.SetButtonText(this.buttonOkText + "(" + this.WaitTime + ")"); + }, ShowErrorMode.NO); + System.Threading.Thread.Sleep(1000); + this.WaitTime--; + } + HdlThreadLogic.Current.RunMain(() => + { + //鍙互鐐瑰嚮 + btnConfirm.SetButtonText(this.buttonOkText); + btnConfirm.CanClick = true; + }, ShowErrorMode.NO); + }); + } + + /// <summary> + /// 寮�鍚瓑寰呮椂闂� + /// </summary> + /// <param name="btnConfirm">纭鎸夐挳</param> + private void StartWaitTime(ButtonBase btnConfirm) + { + if (this.WaitTime <= 0) + { + return; + } +#if Android + ((FrameLayoutStatuControl)btnConfirm.Parent).CanClick = false; +#endif +#if iOS + btnConfirm.CanClick = false; +#endif + HdlThreadLogic.Current.RunThread(() => + { + //鏄剧ず鍓╀綑绛夊緟鏃堕棿 + while (btnConfirm.Parent != null && this.WaitTime >= 0) + { + HdlThreadLogic.Current.RunMain(() => + { + btnConfirm.Text = this.buttonOkText + "(" + this.WaitTime + ")"; + }, ShowErrorMode.NO); + System.Threading.Thread.Sleep(1000); + this.WaitTime--; + } + HdlThreadLogic.Current.RunMain(() => + { + //鍙互鐐瑰嚮 + btnConfirm.Text = this.buttonOkText; +#if Android + ((FrameLayoutStatuControl)btnConfirm.Parent).CanClick = true; +#endif +#if iOS + btnConfirm.CanClick = true; +#endif + }, ShowErrorMode.NO); + }); + } + + #endregion + + #region 鈻� 鍏抽棴寮圭獥(澶栭儴璋冪敤)_________________ + + /// <summary> + /// 鍏抽棴鍏ㄩ儴鐨勫脊绐� + /// </summary> + public static void CloseAllMsgDialog() + { + while (true) + { + var myView = Common.CommonPage.Instance.GetChildren(Common.CommonPage.Instance.ChildrenCount - 1); + if (myView == null) { return; } + if (myView is NormalFrameLayout) + { + if (((NormalFrameLayout)myView).MainKey != "ShowMsg") + { + return; + } + //绉婚櫎 + myView.RemoveFromParent(); + continue; + } + return; + } + } + + #endregion + } +} -- Gitblit v1.8.0