using System; using System.Collections.Generic; using System.Text; using ZigBee.Device; namespace Shared.Phone.UserCenter.Safety { /// /// 延时设置的主界面★ /// public class GarrisonAreaDelayedSettionForm : EditorCommonForm { #region ■ 变量声明___________________________ /// /// 防区的延迟时间 /// private Safeguard.CatDelayTimeResponseData timeResponseData = null; /// /// 进入延迟的时间控件 /// private NormalViewControl inDelayTimeControl = null; /// /// 外出延迟的时间控件 /// private NormalViewControl outDelayTimeControl = null; #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// public void ShowForm() { //设置头部信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDelayedSettion)); //初始化中部信息 this.InitMiddleFrame(); } /// /// 初始化中部信息 /// private void InitMiddleFrame() { //清空bodyFrame this.ClearBodyFrame(); //背景 var frameBack = new FrameLayout(); frameBack.Height = Application.GetRealHeight(423); frameBack.BackgroundColor = UserCenterColor.Current.White; bodyFrameLayout.AddChidren(frameBack); //该功能只对出入防区有效 var btnTitle = new NormalViewControl(864, 50, true); btnTitle.X = ControlCommonResourse.XXLeft; btnTitle.Y = Application.GetRealHeight(38); btnTitle.TextSize = 12; btnTitle.TextColor = UserCenterColor.Current.TextGrayColor2; btnTitle.TextID = R.MyInternationalizationString.uThisFunctionOnlyInAndOutSectors; frameBack.AddChidren(btnTitle); var frameTable = new FrameListControl(29); frameTable.Y = btnTitle.Bottom + Application.GetRealHeight(38); frameTable.Height = frameBack.Height - btnTitle.Bottom - Application.GetRealHeight(38); bodyFrameLayout.AddChidren(frameTable); //添加所有的菜单 this.AddAllMenuRow(frameTable); } #endregion #region ■ 添加菜单___________________________ /// /// 添加所有的菜单 /// /// private async void AddAllMenuRow(FrameListControl listView) { //打开进度条 this.ShowProgressBar(); //获取防区的延迟时间(仅限出入防区),出错时返回null this.timeResponseData = await HdlSafeguardLogic.Current.GetGarrisonDelayTime(); if (timeResponseData == null) { //关闭进度条 this.CloseProgressBar(ShowReLoadMode.YES); return; } //关闭进度条 this.CloseProgressBar(); Application.RunOnMainThread(() => { //初始化【进入延时】行 this.InitInDelayedRow(listView); //初始化【外出延时】行 this.InitOutDelayedRow(listView); }); } #endregion #region ■ 进入延时___________________________ /// /// 初始化【进入延时】行 /// /// private void InitInDelayedRow(FrameListControl listView) { var row = new FrameRowControl(listView.rowSpace / 2); listView.AddChidren(row); row.Y = 0 - listView.rowSpace; //进入延时 row.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uInDelayed), 500); //添加右箭头 row.AddRightArrow(); //底线 row.AddBottomLine(); //时间 string second = Language.StringByID(R.MyInternationalizationString.Second); this.inDelayTimeControl = row.AddMostRightView(this.GetTimeText(this.timeResponseData.EntranceDelayTime), 200); this.inDelayTimeControl.TextColor = UserCenterColor.Current.TextGrayColor1; row.ButtonClickEvent += (sender, e) => { //显示延时时间 this.ShowDelayListTime(1); }; } #endregion #region ■ 外出延时___________________________ /// /// 初始化【外出延时】行 /// /// private void InitOutDelayedRow(FrameListControl listView) { var row = new FrameRowControl(listView.rowSpace / 2); listView.AddChidren(row); //外出延时 row.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uOutDelayed), 500); //添加右箭头 row.AddRightArrow(); //时间 string second = Language.StringByID(R.MyInternationalizationString.Second); this.outDelayTimeControl = row.AddMostRightView(this.GetTimeText(this.timeResponseData.GoOutDelayTime), 200); this.outDelayTimeControl.TextColor = UserCenterColor.Current.TextGrayColor1; row.ButtonClickEvent += (sender, e) => { //显示延时时间 this.ShowDelayListTime(2); }; } #endregion #region ■ 保存时间___________________________ /// /// 保存时间 /// /// 进入延迟时间 /// 外出延迟时间 private async void SaveTime(int inDelayTime, int OutDelayTime) { //打开进度条 this.ShowProgressBar(); var result = await HdlSafeguardLogic.Current.SetGarrisonDelayTime(inDelayTime, OutDelayTime); //关闭进度条 this.CloseProgressBar(); if (result == true) { //修改缓存 this.timeResponseData.EntranceDelayTime = inDelayTime; this.timeResponseData.GoOutDelayTime = OutDelayTime; Application.RunOnMainThread(() => { if (this.inDelayTimeControl != null) { //显示时间翻译文本 this.inDelayTimeControl.Text = this.GetTimeText(inDelayTime); } if (this.outDelayTimeControl != null) { //显示时间翻译文本 this.outDelayTimeControl.Text = this.GetTimeText(OutDelayTime); } }); } } #endregion #region ■ 显示延时时间_______________________ /// /// 显示延时时间列表 /// /// 1:进入延迟 2:外出延迟 private void ShowDelayListTime(int div) { //分 string strMinute = Language.StringByID(R.MyInternationalizationString.uMinute); //秒 string strSecond = Language.StringByID(R.MyInternationalizationString.uSecond); var listfirst = new List(); var listSecond = new List>(); for (int i = 0; i <= 29; i++) { listfirst.Add(i.ToString().PadLeft(2, '0') + strMinute); var listTemp = new List(); for (int j = 0; j <= 59; j++) { if (i == 0 && j == 0) { continue; } listTemp.Add(j.ToString().PadLeft(2, '0') + strSecond); } listSecond.Add(listTemp); } //加一个30分钟吧 listfirst.Add("30" + strMinute); var listTemp2 = new List() { "00" + strSecond }; listSecond.Add(listTemp2); //进入延迟 int delayTime = this.timeResponseData.EntranceDelayTime; string title = Language.StringByID(R.MyInternationalizationString.uInDelayed); if (div == 2) { //外出延迟 delayTime = this.timeResponseData.GoOutDelayTime; title = Language.StringByID(R.MyInternationalizationString.uOutDelayed); } string value = (delayTime / 60).ToString().PadLeft(2, '0') + strMinute; int index1 = listfirst.IndexOf(value); if (index1 == -1) { index1 = 0; } value = (delayTime % 60).ToString().PadLeft(2, '0') + strSecond; int index2 = listSecond[index1].IndexOf(value); if (index2 == -1) { index2 = 0; } PickerView.ShowSecondary(listfirst, listSecond, (value1, value2) => { int minute = Convert.ToInt32(listfirst[value1].Substring(0, 2)); int second = Convert.ToInt32(listSecond[value1][value2].Substring(0, 2)); int delaySecond = minute * 60 + second; //保存时间 if (div == 1) { //进入延迟 this.SaveTime(delaySecond, this.timeResponseData.GoOutDelayTime); } else { //外出延迟 this.SaveTime(this.timeResponseData.EntranceDelayTime, delaySecond); } }, index1, index2, title, Language.StringByID(R.MyInternationalizationString.uFinish), Language.StringByID(R.MyInternationalizationString.uCancel)); } #endregion #region ■ 一般方法___________________________ /// /// 获取时间的翻译文本 /// /// 秒 /// private string GetTimeText(int timeSecond) { string textValue = string.Empty; //分 int checkValue = timeSecond / 60; if (checkValue > 0) { string minu = Language.StringByID(R.MyInternationalizationString.uMinute); textValue = checkValue + minu; } //秒 checkValue = timeSecond % 60; if (checkValue > 0) { string second = Language.StringByID(R.MyInternationalizationString.uSecond); textValue += checkValue + second; } return textValue; } #endregion } }