using Shared; using HDL_ON.UI.CSS; using HDL_ON.Stan; using System; using System.Collections.Generic; using System.Text; namespace HDL_ON.UI { /// /// 门锁常开模式失效时间设置界面(不需要添加到父控件) /// public class DoorLockExpireTimeSettionPage { #region ■ 变量声明___________________________ /// /// 结束事件(参数为,输入的小时) /// public Action FinishEvent = null; #endregion #region ■ 初始化_____________________________ /// /// 界面显示 /// public void ShowForm() { var dialogForm = new Dialog(); dialogForm.BackgroundColor = CSS_Color.DialogTransparentColor1; //主控件 var frameMain = new NormalFrameLayout(); dialogForm.AddChidren(frameMain); dialogForm.Show(); frameMain.ButtonClickEvent += (sender, e) => { dialogForm.Close(); this.FinishEvent = null; }; //中间区域 var frameCenter = new NormalFrameLayout(); frameCenter.Y = Application.GetRealHeight(239); frameCenter.Gravity = Gravity.CenterHorizontal; frameCenter.Width = Application.GetRealWidth(270); frameCenter.Height = Application.GetRealHeight(172); frameCenter.BackgroundColor = CSS_Color.MainBackgroundColor; frameCenter.BorderColor = 0x00000000; frameCenter.BorderWidth = 0; frameCenter.Radius = (uint)Application.GetMinRealAverage(10); frameMain.AddChidren(frameCenter); //失效设置 var btnTitle = new NormalViewControl(frameCenter.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(22), false); btnTitle.Y = Application.GetRealHeight(20); btnTitle.Gravity = Gravity.CenterHorizontal; btnTitle.TextColor = CSS_Color.MainColor; btnTitle.TextSize = CSS_FontSize.SubheadingFontSize; btnTitle.TextAlignment = TextAlignment.Center; btnTitle.IsBold = true; btnTitle.Text = Language.StringByID(StringId.FailTimeSeetion); frameCenter.AddChidren(btnTitle); //常开模式将于{0}小时后失效 string[] strArryMsg = Language.StringByID(StringId.AlwayOnWillCloseAtTimeMsg).Split(new string[] { "{0}" }, StringSplitOptions.RemoveEmptyEntries); //常开模式将于 var btnMsg1 = new NormalViewControl(Application.GetRealWidth(76), Application.GetRealHeight(32), false); btnMsg1.X = Application.GetRealWidth(20); btnMsg1.Y = btnTitle.Bottom + Application.GetRealHeight(20); btnMsg1.TextSize = CSS_FontSize.PromptFontSize_FirstLevel; btnMsg1.IsMoreLines = true; btnMsg1.Text = strArryMsg[0].Trim(); frameCenter.AddChidren(btnMsg1); //失效时间的背景容器 var frameTime = new FrameLayout(); frameTime.X = btnMsg1.Right + Application.GetRealWidth(12); frameTime.Y = btnMsg1.Y; frameTime.Width = Application.GetRealWidth(62); frameTime.Height = Application.GetRealHeight(32); frameTime.Radius = (uint)Application.GetRealWidth(4); frameTime.BackgroundColor = CSS_Color.BackgroundColor; frameCenter.AddChidren(frameTime); //失效时间输入控件 var txtInput = new TextInputControl(frameTime.Width - Application.GetRealWidth(10 * 2), frameTime.Height, false); txtInput.TextColor = CSS_Color.FirstLevelTitleColor; txtInput.Gravity = Gravity.CenterHorizontal; txtInput.TextAlignment = TextAlignment.Center; txtInput.Text = "12"; txtInput.MaxByte = 2; txtInput.IsNumberKeyboardType = true; frameTime.AddChidren(txtInput); //小时后失效 var btnMsg2 = new NormalViewControl(btnMsg1.Width, btnMsg1.Height, false); btnMsg2.X = frameTime.Right + Application.GetRealWidth(12); btnMsg2.Y = btnMsg1.Y; btnMsg2.TextSize = CSS_FontSize.PromptFontSize_FirstLevel; btnMsg2.IsMoreLines = true; btnMsg2.Text = strArryMsg.Length > 1 ? strArryMsg[1].Trim() : string.Empty; frameCenter.AddChidren(btnMsg2); //错误显示消息 var btnErrorMsg = new NormalViewControl(frameCenter.Width - Application.GetRealWidth(20) * 2, Application.GetRealHeight(21), false); btnErrorMsg.Y = btnMsg1.Bottom; btnErrorMsg.Gravity = Gravity.CenterHorizontal; btnErrorMsg.TextColor = CSS_Color.WarningColor; btnErrorMsg.IsMoreLines = true; btnErrorMsg.TextAlignment = TextAlignment.TopLeft; //btnErrorMsg.Height = Application.GetRealHeight(21) * btnErrorMsg.GetRealRowCountByText(); btnErrorMsg.Visible = false; frameCenter.AddChidren(btnErrorMsg); //确认 var btnConfirm = new NormalViewControl(frameCenter.Width, Application.GetRealHeight(45), false); btnConfirm.Gravity = Gravity.BottomCenter; btnConfirm.TextAlignment = TextAlignment.Center; btnConfirm.TextSize = CSS_FontSize.SubheadingFontSize; btnConfirm.TextColor = CSS_Color.MainBackgroundColor; btnConfirm.BackgroundColor = CSS_Color.MainColor; btnConfirm.Text = Language.StringByID(StringId.Confirm); frameCenter.AddChidren(btnConfirm); btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight); btnConfirm.ButtonClickEvent += (sender, e) => { //检测输入的时间是否正确 var errorMsg = this.CheckInputTime(txtInput.Text.Trim()); if (errorMsg != string.Empty) { //看看消息显示的控件有没有大于34,大于的话,则算出它增加的宽度(34是输入框到底部按钮Y轴的空白区域) int value = 0; if (btnErrorMsg.Height > Application.GetRealHeight(34)) { //5是与底部按钮Y轴的间距 value = btnErrorMsg.Height - Application.GetRealHeight(34) + Application.GetRealHeight(5); } //调整白色桌布的高度和坐标 frameCenter.Height = frameTime.Bottom + Application.GetRealHeight(34) + btnConfirm.Height + value; //白色背景在蓝湖上的坐标为239,高度为172 然后让它按这个比例置于桌布 frameCenter.Y = Application.GetRealHeight(239) - (frameCenter.Height - Application.GetRealHeight(172)) / 2; btnConfirm.Gravity = Gravity.BottomCenter; //按钮置底 return; } //关闭界面 dialogForm.Close(); //回调函数 FinishEvent?.Invoke(Convert.ToInt32(txtInput.Text.Trim())); FinishEvent = null; }; } #endregion #region ■ 一般方法___________________________ /// /// 检测输入的时间是否正确 /// /// 输入的时间 /// private string CheckInputTime(string i_value) { if (i_value == string.Empty) { //请输入失效时间 return Language.StringByID(StringId.PleaseInputFailTime); } int value = Convert.ToInt32(i_value); if (value < 1) { //失效时间不能小于1小时 return Language.StringByID(StringId.InvalidTimeLessThan1); } if (value > 72) { //失效时间不能大于72小时 return Language.StringByID(StringId.InvalidTimeMoreThan72); } return string.Empty; } #endregion } }