using Shared; using HDL_ON.UI.CSS; using HDL_ON.Stan; using System; using System.Collections.Generic; using System.Text; using HDL_ON.Entity; namespace HDL_ON.UI { /// /// 门锁常开自动化编辑界面 /// public class DoorLockAlwaysOnManagerPage : EditorCommonForm { #region ■ 变量声明___________________________ /// /// 常开自动化信息 /// private AlwayOnAutomationInfo automationInfo = null; /// /// 一些文本 /// private Dictionary dicText = new Dictionary(); #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// public void ShowForm(AlwayOnAutomationInfo info) { this.automationInfo = info; if (info == null) { this.automationInfo = new AlwayOnAutomationInfo(); //新建自动化 base.SetTitleText(Language.StringByID(StringId.newAutomation)); } else { //编辑自动化 base.SetTitleText(Language.StringByID(StringId.editAutomation)); } this.dicText["周1"] = Language.StringByID(StringId.monday); this.dicText["周2"] = Language.StringByID(StringId.tuesday); this.dicText["周3"] = Language.StringByID(StringId.wednesday); this.dicText["周4"] = Language.StringByID(StringId.thursday); this.dicText["周5"] = Language.StringByID(StringId.friday); this.dicText["周6"] = Language.StringByID(StringId.saturday); this.dicText["周7"] = Language.StringByID(StringId.sunday); //初始化中部信息 this.InitMiddleFrame(); } /// /// 初始化中部信息 /// private void InitMiddleFrame() { //清空bodyFrame this.ClearBodyFrame(); //初始化条件控件 this.InitConditionControl(); //初始化目标控件 this.InitTargetControl(); //初始化循环方式控件 this.InitLoopControl(); //确认按钮 var btnSave = this.AddBottomClickButton(Language.StringByID(StringId.Confirm)); btnSave.ButtonClickEvent += (sender, e) => { }; } #endregion #region ■ 初始化条件控件_____________________ /// /// 初始化条件控件 /// private void InitConditionControl() { //如果 var btnIf = new NormalViewControl(300, 22, true); btnIf.X = HdlControlResourse.XXLeft; btnIf.Y = Application.GetRealHeight(12); btnIf.TextID = StringId.ifCondition; btnIf.TextSize = CSS_FontSize.SubheadingFontSize; btnIf.TextColor = CSS_Color.FirstLevelTitleColor; btnIf.IsBold = true; bodyFrameLayout.AddChidren(btnIf); //白色背景容器 var frameBack = new FrameLayout(); frameBack.Y = btnIf.Bottom + Application.GetRealHeight(12); frameBack.Width = Application.GetRealWidth(343); frameBack.Height = Application.GetRealHeight(88); frameBack.Gravity = Gravity.CenterHorizontal; frameBack.BackgroundColor = CSS_Color.MainBackgroundColor; frameBack.Radius = (uint)Application.GetRealWidth(12); bodyFrameLayout.AddChidren(frameBack); //条件 var rowConditon = new FrameRowControl(); rowConditon.LeftOffset = Application.GetRealWidth(12) - HdlControlResourse.XXLeft; rowConditon.Width = frameBack.Width; frameBack.AddChidren(rowConditon); var btnConditon = rowConditon.AddLeftCaption(Language.StringByID(StringId.Condtion), 300); btnConditon.TextColor = CSS_Color.FirstLevelTitleColor; //底线 rowConditon.AddBottomLine(); //时刻 var rowTime = new FrameRowControl(); rowTime.Y = rowConditon.Bottom; rowTime.LeftOffset = Application.GetRealWidth(12) - HdlControlResourse.XXLeft; rowTime.Width = frameBack.Width; frameBack.AddChidren(rowTime); rowTime.AddLeftIcon(28, "LogicIcon/time.png"); var btnTime = rowTime.AddLeftCaption(Language.StringByID(StringId.hour), 300); btnTime.TextColor = CSS_Color.FirstLevelTitleColor; rowTime.AddRightArrow(); var btnValue = rowTime.AddMostRightView(this.automationInfo.Hour + ":" + this.automationInfo.Minute.ToString().PadLeft(2, '0'), 80); rowTime.ButtonClickEvent += (sender, e) => { //时间选择弹窗 var form = new BottomTimeSelectControl(); form.InitControl(this.automationInfo.Hour, this.automationInfo.Minute); form.FinishEvent += (div, selectHour, selectMin) => { if (div != 1) { return; } this.automationInfo.Hour = selectHour; this.automationInfo.Minute = selectMin; btnValue.Text = this.automationInfo.Hour + ":" + this.automationInfo.Minute.ToString().PadLeft(2, '0'); }; }; } #endregion #region ■ 初始化目标控件_____________________ /// /// 初始化目标控件 /// private void InitTargetControl() { //就执行 var btnExecuted = new NormalViewControl(300, 22, true); btnExecuted.X = HdlControlResourse.XXLeft; btnExecuted.Y = Application.GetRealHeight(154); btnExecuted.TextID = StringId.isExecuted; btnExecuted.TextSize = CSS_FontSize.SubheadingFontSize; btnExecuted.TextColor = CSS_Color.FirstLevelTitleColor; btnExecuted.IsBold = true; bodyFrameLayout.AddChidren(btnExecuted); //白色背景容器 var frameBack = new FrameLayout(); frameBack.Y = btnExecuted.Bottom + Application.GetRealHeight(12); frameBack.Width = Application.GetRealWidth(343); frameBack.Height = Application.GetRealHeight(88); frameBack.Gravity = Gravity.CenterHorizontal; frameBack.BackgroundColor = CSS_Color.MainBackgroundColor; frameBack.Radius = (uint)Application.GetRealWidth(12); bodyFrameLayout.AddChidren(frameBack); //动作行控件 var rowAction = new FrameRowControl(); rowAction.LeftOffset = Application.GetRealWidth(12) - HdlControlResourse.XXLeft; rowAction.Width = frameBack.Width; frameBack.AddChidren(rowAction); //动作 var btnAction = rowAction.AddLeftCaption(Language.StringByID(StringId.Action), 300); btnAction.TextColor = CSS_Color.FirstLevelTitleColor; //底线 rowAction.AddBottomLine(); //常开模式行控件 var rowModel = new FrameRowControl(); rowModel.Y = rowAction.Bottom; rowModel.LeftOffset = Application.GetRealWidth(12) - HdlControlResourse.XXLeft; rowModel.Width = frameBack.Width; frameBack.AddChidren(rowModel); //图标 rowModel.AddLeftIcon(28, "FunctionIcon/DoorLock/NormallyOpenIcon2.png"); //常开模式 var btnAlwayOn = rowModel.AddLeftCaption(Language.StringByID(StringId.AlwaysOnModel), 300); btnAlwayOn.TextColor = CSS_Color.FirstLevelTitleColor; //右箭头 rowModel.AddRightArrow(); //值 var btnValue = rowModel.AddMostRightView(this.automationInfo.IsOpenAlwayOn == true ? Language.StringByID(StringId.kaiqi) : Language.StringByID(StringId.Close), 80); rowModel.ButtonClickEvent += (sender, e) => { //选择弹窗 var form = new BottomMenuSelectControl(2); //开启 form.AddMenu(Language.StringByID(StringId.kaiqi), () => { this.automationInfo.IsOpenAlwayOn = true; btnValue.Text = Language.StringByID(StringId.kaiqi); }); //关闭 form.AddMenu(Language.StringByID(StringId.Close), () => { this.automationInfo.IsOpenAlwayOn = false; btnValue.Text = Language.StringByID(StringId.Close); },CSS_Color.PromptingColor1); }; } #endregion #region ■ 初始化循环方式控件_________________ /// /// 初始化循环方式控件 /// private void InitLoopControl() { //循环方式 var btnloop = new NormalViewControl(300, 22, true); btnloop.X = HdlControlResourse.XXLeft; btnloop.Y = Application.GetRealHeight(296); btnloop.TextID = StringId.cyclic; btnloop.TextSize = CSS_FontSize.SubheadingFontSize; btnloop.TextColor = CSS_Color.FirstLevelTitleColor; btnloop.IsBold = true; bodyFrameLayout.AddChidren(btnloop); //周期的白色背景容器 var frameDayBack = new FrameLayout(); frameDayBack.Y = btnloop.Bottom + Application.GetRealHeight(12); frameDayBack.Width = Application.GetRealWidth(343); frameDayBack.Height = Application.GetRealHeight(50); frameDayBack.Gravity = Gravity.CenterHorizontal; frameDayBack.BackgroundColor = CSS_Color.MainBackgroundColor; frameDayBack.Radius = (uint)Application.GetRealWidth(12); bodyFrameLayout.AddChidren(frameDayBack); //周期行控件 var rowLoop = new FrameRowControl(); rowLoop.LeftOffset = Application.GetRealWidth(12) - HdlControlResourse.XXLeft; rowLoop.Width = frameDayBack.Width; rowLoop.Height = Application.GetRealHeight(50); frameDayBack.AddChidren(rowLoop); //周期 var cycleText = this.GetLoopCondtionText(); var btnCycle = rowLoop.AddLeftCaption(cycleText, 270); btnCycle.TextColor = CSS_Color.FirstLevelTitleColor; btnCycle.IsMoreLines = false;//让它不换行了,不然有点难看 //右箭头 rowLoop.AddRightArrow(); rowLoop.ButtonClickEvent += (sender, e) => { //显示周期循环配置窗口 this.ShowLoopMethordSettionDialog(btnCycle); }; //推送的白色背景容器 var framePushBack = new FrameLayout(); framePushBack.Y = frameDayBack.Bottom + Application.GetRealHeight(8); framePushBack.Width = Application.GetRealWidth(343); framePushBack.Height = Application.GetRealHeight(100); framePushBack.Gravity = Gravity.CenterHorizontal; framePushBack.BackgroundColor = CSS_Color.MainBackgroundColor; framePushBack.Radius = (uint)Application.GetRealWidth(12); bodyFrameLayout.AddChidren(framePushBack); //推送行控件 var rowPush = new FrameRowControl(); rowPush.Width = framePushBack.Width; rowPush.Height = Application.GetRealHeight(50); rowPush.LeftOffset = Application.GetRealWidth(12) - HdlControlResourse.XXLeft; framePushBack.AddChidren(rowPush); //执行推送 var btnPush = rowPush.AddLeftCaption(Language.StringByID(StringId.push), 300); btnPush.TextColor = CSS_Color.FirstLevelTitleColor; //底线 rowPush.AddBottomLine(); //推送的开关按钮 var btnPushSwitch = rowPush.AddMostRightSwitchIcon(); btnPushSwitch.ButtonClickEvent += (sender, e) => { btnPushSwitch.IsSelected = !btnPushSwitch.IsSelected; }; //发送通知行控件 var rowNotice = new FrameRowControl(); rowNotice.Y = rowPush.Bottom; rowNotice.Width = framePushBack.Width; rowNotice.Height = Application.GetRealHeight(50); rowNotice.LeftOffset = Application.GetRealWidth(12) - HdlControlResourse.XXLeft; framePushBack.AddChidren(rowNotice); //发送通知 var btnNotice = rowNotice.AddLeftCaption(Language.StringByID(StringId.notification), 300); btnNotice.TextColor = CSS_Color.FirstLevelTitleColor; //右箭头 rowNotice.AddRightArrow(); rowNotice.ButtonClickEvent += (sender, e) => { var form = new UI2.Intelligence.Automation.InputPushText(); MainPage.BasePageView.AddChidren(form); //form.Show(this.automationInfo.PushSettion); form.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; //form.action += (pushInfo) => //{ // //赋值 // this.automationInfo.PushSettion = pushInfo; //}; }; } #endregion #region ■ 显示周期循环配置窗口_______________ /// /// 显示周期循环配置窗口 /// private void ShowLoopMethordSettionDialog(NormalViewControl btnCycle) { //之前选择的控件 NormalViewControl btnOldView = null; var form = new BottomItemEditorControl(4, Language.StringByID(StringId.cyclic)); form.ClickConfirmClose = false; //执行一次 form.AddRowMenu(Language.StringByID(StringId.performA), string.Empty, (btnView, btnValue) => { this.automationInfo.LoopDiv = 1; if (btnOldView != null) { //还原颜色 btnOldView.TextColor = CSS_Color.FirstLevelTitleColor; } //变更颜色 btnView.TextColor = CSS_Color.textConfirmColor; btnOldView = btnView; //变更显示文本 btnCycle.Text = this.GetLoopCondtionText(); }, false); //每天 form.AddRowMenu(Language.StringByID(StringId.days), string.Empty, (btnView, btnValue) => { this.automationInfo.LoopDiv = 2; if (btnOldView != null) { //还原颜色 btnOldView.TextColor = CSS_Color.FirstLevelTitleColor; } //变更颜色 btnView.TextColor = CSS_Color.textConfirmColor; btnOldView = btnView; //变更显示文本 btnCycle.Text = this.GetLoopCondtionText(); }, false); //每周 form.AddRowMenu(Language.StringByID(StringId.weekly), string.Empty, (btnView, btnValue) => { //关闭弹窗,显示周期循环(星期)的配置窗口 form.Close(); this.ShowLoopMethordWeekDialog(btnCycle); }); //每月 form.AddRowMenu(Language.StringByID(StringId.monthly), string.Empty, (btnView, btnValue) => { //关闭弹窗,显示周期循环(月份)的配置窗口 form.Close(); this.ShowLoopMethordMonthDialog(btnCycle); }); form.FinishEvent += (div) => { //当点击了确认时,如果还没选择,则无反应 if (div != 1 || btnOldView == null) { return; } form.Close(); }; } /// /// 显示周期循环(星期)的配置窗口 /// private void ShowLoopMethordWeekDialog(NormalViewControl btnCycle) { //星期一到星期日 var listText = new List(); listText.Add(this.dicText["周1"]); listText.Add(this.dicText["周2"]); listText.Add(this.dicText["周3"]); listText.Add(this.dicText["周4"]); listText.Add(this.dicText["周5"]); listText.Add(this.dicText["周6"]); listText.Add(this.dicText["周7"]); var listSelect = new List(); if (this.automationInfo.LoopDiv == 3) { //之前选择的是这个区分才能有默认选择 foreach (var value in this.automationInfo.ListLoopValue) { //默认选择 listSelect.Add(value - 1); } } var form = new BottomItemSelectControl(7, Language.StringByID(StringId.cyclic)); form.AddRowMenu(listText, listSelect); form.FinishEvent += (div, listIndex) => { if (div == 0) { //如果点击了取消,则调起 周期循环配置窗口 this.ShowLoopMethordSettionDialog(btnCycle); return; } //更改缓存 this.automationInfo.LoopDiv = 3; this.automationInfo.ListLoopValue = new List(); foreach (var index in listIndex) { this.automationInfo.ListLoopValue.Add(index + 1); } //变更显示文本 btnCycle.Text = this.GetLoopCondtionText(); }; } /// /// 显示周期循环(月份)的配置窗口 /// private void ShowLoopMethordMonthDialog(NormalViewControl btnCycle) { var listSelect = new List(); if (this.automationInfo.LoopDiv == 4) { //之前选择的是这个区分才能有默认选择 foreach (var value in this.automationInfo.ListLoopValue) { //默认选择 listSelect.Add(value); } } var form = new BottomSomeDaySelectControl(Language.StringByID(StringId.monthly)); form.InitControl(listSelect); form.FinishEvent += (div, listIndex) => { if (div == 0) { //如果点击了取消,则调起 周期循环配置窗口 this.ShowLoopMethordSettionDialog(btnCycle); return; } //更改缓存 this.automationInfo.LoopDiv = 4; this.automationInfo.ListLoopValue = new List(); foreach (var day in listIndex) { this.automationInfo.ListLoopValue.Add(day); } //变更显示文本 btnCycle.Text = this.GetLoopCondtionText(); }; } #endregion #region ■ 一般方法___________________________ /// /// 获取循环条件的翻译文本 /// /// private string GetLoopCondtionText() { //执行一次 if (this.automationInfo.LoopDiv == 1) { return Language.StringByID(StringId.performA); } //每天 else if (this.automationInfo.LoopDiv == 2) { return Language.StringByID(StringId.days); } //每周 else if (this.automationInfo.LoopDiv == 3) { var textValue = string.Empty; foreach (var weekValue in this.automationInfo.ListLoopValue) { textValue += this.dicText["周" + weekValue] + ","; } //去掉最后的逗号 return textValue.Substring(0, textValue.Length - 1); } //每月 else if (this.automationInfo.LoopDiv == 4) { var textValue = Language.StringByID(StringId.monthly) + " "; foreach (var day in this.automationInfo.ListLoopValue) { textValue += day.ToString() + ","; } //去掉最后的逗号 return textValue.Substring(0, textValue.Length - 1); } return string.Empty; } #endregion } }